это мой код ниже и что он делает, принимает ввод в переменную string1, а затем мой while цикл токенизирует каждое слово, и я могу достичь цели моего назначение, которое должно перевернуть слова в строке. Ниже моего кода это вывод, и, как вы можете видеть, пробелов нет. Как я могу поместить пробел в финальную строку, подобную исходной строке?Невозможно добавить пробел к строке во время цикла
Код:
int main()
{
int ch, ss=0, s=0;
char x[3];
char *word, string1[100], string2[100], temp[100]={0};
x[0]='y';
while(x[0]=='y'||x[0]=='Y')
{
printf("Enter a String: ");
fgets(string1, 100, stdin);
if (string1[98] != '\n' && string1[99] == '\0') { while ((ch = fgetc(stdin)) != EOF && ch != '\n'); }
word = strtok(string1, " \n");
while(word != NULL)
{
s = strlen(word);
ss=ss+s;
strncpy(string2, word, s+1);
strncat(string2, temp, ss);
strncpy(temp, string2, ss+1);
printf("string2: %s\n",temp);
word = strtok(NULL, " \n");
}
printf("Run Again?(y/n):");
fgets(x, 2, stdin);
while ((ch = fgetc(stdin)) != EOF && ch != '\n');
}
return 0;
}
Выход:
Enter a String: AAA BBB CCC
string2: AAA
string2: BBBAAA
string2: CCCBBBAAA
', если (строка1 [98]! = '\ П' && строка1 [99] == '\ 0')' не определен, если 'fgets()' 'NULL' возвращается или читать меньше, чем 98 персонажи. – EOF
Нет пробелов, потому что вы не добавляете белые пробелы! –
Кроме того, последовательность 'strncpy (string2, word, s + 1); strncat (string2, temp, ss); strncpy (temp, string2, ss + 1); 'практически гарантирует, что' temp' закончится без нуль-терминатора. – EOF