2016-01-11 2 views
0

Я сделал эту небольшую программу, которая делит слово на отдельные буквы (например, Hello: H-e-l-l-o).Скопируйте отдельные слова предложения C

int i; 
    char str[50],str2[2]; 
    printf("insert something \n"); 
    scanf("%s", str); 
    for (i=0; i<strlen(str); i++) 
    { 
    strcpy (str2,str[i]); 
    //printf("%c", str[i]); 
    } 

он работает отлично, но теперь я хочу, чтобы каждое слово получает в char я попытался использовать strcpy (str2,str[i]);, но не работает :(

+0

'char str2 [2] = {0}; str2 [0] = stri [i]:/* printf ("% s", str2); */' – BLUEPIXY

+2

@Simone не игнорирует предупреждения, которые ваш компилятор дает вам, они есть по какой-то причине. –

+1

@Simone Непонятно, что именно вы хотите. :) –

ответ

0

В вашем случае,

strcpy (str2,str[i]); 

адресата str2 не хватает, чтобы провести всю строку. Так что, закончив работу, ваш код вызывает undefined behavior.

Для справки, C11 стандарт, глава §7.24.1

[...] Если массив доступен после окончания объекта, поведение не определено.

Вы можете использовать индексацию массива вместо экстракта и печать каждого элемента в массиве.

+0

Человек str2 будет содержать только одно слово, если слово, например, «Hello», str2 будет содержать «H», затем «e» и т. Д. – Simone

Смежные вопросы