我正在做一个程序来复制除前两个单词以外的所有字符串单词,并在其末尾添加一个x。
但是我不能把x放在最后。请帮忙!!!!
下面是我的代码。
#include<stdio.h>
#include<string.h>
int main()
{
char a[25], b[25];
int i, j, count = 0, l, k;
scanf("%[^\n]s", a);
i = strlen(a);
if (i > 20)
printf("Given Sentence is too long.");
else
{/* checking for first 2 words and counting 2 spaces*/
for (j = 0; j < i; j++)
{
if (a[j] == ' ')
count = count + 1;
if (count == 2)
{
k = j;
break;
}
}
/* copying remaining string into new one*/
for (j = 0; j < i - k; j++)
{
b[j] = a[j + k];
}
b[j + 1] = 'x';
printf("%s", b);
}
}
最佳答案
在C中,字符串是char数组,正如您所知,C知道字符串的结尾的方式是'\ 0'字符。在您的示例中,您缺少最后几行
/* copying remaining string into new one*/
for(j=0;j<i-k;j++)
{
b[j]=a[j+k];
}
b[j+1]='x';
printf("%s",b);
循环结束后,j在退出循环之前已经增加了1。
因此,如果您在x之前的字符串是“ test”,则就像
char数组中的't','e','s','t','\\ 0',并且由于j的增加超出了应有的幅度,因此达到了'\ 0'的正确位置,但是'\ 0'之后的字符并不重要,因为它是结尾,因此不会添加x。简单更改为
b[j]='x';