使用strcat时添加了随机空格

时间:2017-07-12 17:42:51

标签: c xcode strcat

我正在尝试不断地将字符串添加到字符串的末尾。我是通过在我的主要

中运行这个来做到这一点的
 char String[256];
char alphabets[26] = "abcdefghijklmnopqrstuvxyz";
for (int i = 0; i < 257; i++) {

            char newChar = alphabets[indexOfNewChar-1];
            printf("new char = %c\n",newChar);
            strcat(String,&newChar);

            printf("%s\n",String);
}

当我运行这堆代码时,会打印出来 new char = b bkhobtj dfhhai bbdhgfcafgcfi bbaccfeai afebaci aedgdddai hei hfedhbi dabeedbi i cfhi i caddbhgbi i acfi cehbhcddcahbhbabi aaadi hi ffhhccbccfbbfggfdhebgeacecai cefdcdb

正如您所看到的,在运行过程中会有空格和新线条随机出现。 在意识到这些随机空间的出现后,我尝试用

删除空格
char* removeSpaces(char* input)
{
    int i,j;
    char *output=input;
    for (i = 0, j = 0; i<strlen(input); i++,j++)
    {
        if (input[i]!=' ')
            output[j]=input[i];
        else
            j--;
    }
    output[j]=0;
    return output;
}

然而,这并没有真正影响结果,因为仍然出现空格。如何删除这些空格或更好地阻止它们出现。 在旁注中,代码在for循环的160多次重复之后终止。我怎么能克服这个。

1 个答案:

答案 0 :(得分:2)

newChar是一个char; &newChar 不是字符串。字符串需要一个空终止符; strcat正在寻找一个,并连接它找到的流浪字符,直到找到一个(虽然这是未定义的行为,因此它可能导致程序崩溃)。