Кто-нибудь видит ошибку здесь? У меня есть альтернативные решения.Код C для изменения строки
int main()
{
char line[100], res[100], temp[20];
fgets(line, 100*sizeof(char), stdin);
int i, j, l;
for(i=strlen(line)-1; i>=0; i--)
{
if(line[i]==' ')
for(j=i+1, l=0; line[j]!=' ' && line[j]!='\0'; l++, j++)
temp[l]=line[j];
temp[++l]=' ';
temp[++l]='\0';
strcat(res, temp);
}
puts(res);
return 0;
}
Пожалуйста, сообщите нам, какое поведение вы на самом деле видите и как оно отличается от ожидаемого поведения. – ChrisF
Никогда не делайте этого 'for (i = strlen (line) -1; i> = 0; i -)', вы вычисляете длину строки 'length' строк, вы должны знать, что' strlen () 'перебирает символы для их подсчета. –
'strcat (res, temp);' - это нехорошо. Вы никогда не устанавливаете 'res []' как завершенный буфер, а 'strcat' ожидает, что это так. Таким образом, охота находится, чтобы найти символ «0», и если вам (un) повезло, вы найдете один с достаточным пространством, оставшимся для фактической конкатенации исходной строки. – WhozCraig