2013-09-20 3 views
-4

Скажите, что моя строка s="Computer". Если бы я был на Java, то C=s.substring(1,3) вернул бы C="oup";.Есть ли встроенная функция в String.h, которая возвращает подстроку?

Есть ли встроенная функция класса в C, которая именно это делает? Не используйте указатели.

+2

Это не вернет 'oup'. –

+6

Строки без указателей - практически оксюморон в C. – NPE

+0

Используйте 'strncpy (c, s + 1, 3);' –

ответ

1

Я не вижу никакого способа сделать это, не используя указатели. Использование указатели:

#include <stdio.h> 
#include <string.h> 
int main() { 
    char *s="Computer"; 
    char sub[20]; 
    strncpy(sub, s+1, 3); 
    printf("%s\n%s", s, sub); 
} 
+0

Я использую как можно меньше указателей. :) –

+0

Почему длина '20'? – us2012

+0

Это всего лишь образец кода. В идеале, если бы мы должны были написать код функции подстроки, он должен был бы добавить байты 'length' в sub. –

0

Try:

char dest[N]; 
snprintf(dest, sizeof dest, "%.*s", len, src+start); 

Обратите внимание, что если вы просто хотите, чтобы распечатать результат, вам не нужно пространство для хранения результирующей строки. Просто выполните:

printf("%.*s", len, src+start); 
Смежные вопросы