【发布时间】:2017-07-12 17:42:51
【问题描述】:
我正在尝试不断地将 char 添加到字符串的末尾。我通过在我的 main 中运行它来做到这一点
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)
char String[256];-->char String[256] = "";或char String[256]; *String = 0; -
2)
i < 257;-->i < sizeof(String)-1; -
3)
strcat(String,&newChar);-->strncat(String, &newChar, 1); -
旁白:建议
char alphabets[27] = "abcdefghijklmnopqrstuvxyz";或char alphabets[] = "abcdefghijklmnopqrstuvxyz";以便可以包含字符串终止符。 -
@Chandrasekaran Dinesh 变量indexOfNewCha的定义在哪里?提供最小编译函数。