我对C来说比较新。我想通过解决coderbyte challenges来解释语言。简单的字符串反向算法出乎意料的结果
但是我在第一次被卡住了。它应该是一个简单的字符串反向算法。
当我输入诸如“asdf”或“1234567”之类的东西时,输出是正确的(“fdsa”,“7654321”)。但是当我输入“12345678”或“thisiscool”时,我得到了“87654321”@“/”loocsisiht @“。我不知道@来自哪里。
这是我的代码:
#include <stdio.h>
#include <string.h>
void FirstReverse(char str[]) {
int len = strlen(str);
char nstr[len];
int i;
for(i = 0; i < len; i++) {
nstr[i] = *(str+len-1-i);
}
printf("%s\n", nstr);
}
int main(void) {
char str[100];
FirstReverse(gets(str));
return 0;
}
是否有人可以告诉我在哪里可以找到错误? 在此先感谢:)
'strlen'返回没有* nul终止的长度*,所以'nstr'太小。你也不要指定nul终止。 – user694733