我對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