我正在做一个程序来复制除前两个单词以外的所有字符串单词,并在其末尾添加一个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';

10-08 12:28