我要颠倒字符串中的单词。我觉得自己朝着正确的方向前进。但是我一直在输出不稳定的信息,并且不禁认为这与我的strncat()
函数有关。你们有没有看到我决定处理的任何问题。我愿意就其他方式提出建议。
int main()
{
int ch, ss=0, s=0;
char x[3];
char *word, string1[100], string2[100], temp[100];
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, " ");
while(word != NULL)
{
s = strlen(word);
ss=ss+s;
strncpy(string2, word, s);
strncat(string2, temp, ss);
strncpy(temp, string2, ss);
printf("string2: %s\n",string2);
printf("temp: %s\n",temp);
word = strtok(NULL, " ");
}
printf("Run Again?(y/n):");
fgets(x, 2, stdin);
while ( (ch = fgetc(stdin)) != EOF && ch != '\n');
}
return 0;
}
这是我的输出:
Enter a String: AAA BBB CCC DDD EEE
string2: AAA
temp: AAA
string2: BBBAAA
temp: BBBAAA
string2: CCCAAABBBAAA
temp: CCCAAABBB
string2: DDDAAABBBAAACCCAAABBB
temp: DDDAAABBBAAA
string2: EEE
AABBBAAACCCAAABBBDDDAAABBBAAA
temp: EEE
AABBBAAACCCA
最佳答案
您需要“至少”初始化strcat()
参数的第一个字节,因为它希望其参数以nul
终止,因此
string2[0] = '\0';
会有所帮助,但是您第一次不需要
strcat()
,可以改用strcpy()
。关于c - 反转字符串中的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32615231/