我是C语言的初学者,我不明白为什么我的代码无法正常工作。目的只是为了反转字符串。
char word[20];
int i, len;
printf("Enter word: ");
scanf("%s", &word);
len = strlen(word);
printf("String reversed: ");
for (i = len-1; i >= 0; i--){
printf("%s", word[i]);
}
答案 0 :(得分:1)
在
printf("%s", word[i]);
%s是错误的格式,因为您写的是字符而不是字符串
除此之外:
索引的自然类型是size_t
而不是 int , i 和 len <都使用size_t
/ em>,并且在这种情况下,请更改循环以使用索引,而不必假定它可以为负数
如果输入字符串的字符数超过19个,则 scanf 会以未定义的行为从 word 中写出,请使用%19s格式限制大小(19而不是20来放置结尾的空字符)
word 是一个数组,请勿使用'&'在 scanf
如果要检测EOF,请检查 scanf 的结果
在循环后刷新输出并写换行符
所以可能的方法是:
char word[20];
printf("Enter word: ");
if (scanf("%19s", word) == 1) {
printf("String reversed: ");
for (size_t i = strlen(word); i != 0; i--){
printf("%c", word[i-1]);
}
putchar('\n');
}