我正在制作的程序应该打印出只以'ed'结尾的字符串。这是我到目前为止,但我不明白为什么它不起作用。我是否误解了if语句的for循环背后的逻辑,还是我只是彻底讨论这个错误?不理解为什么此程序无法正常工作?
#include <stdio.h>
#include <string.h>
int main()
{
char string[10][100];
int i;
for (i =0; i<=10; i++)
{
printf(" Please enter a string for the array \n");
fgets(string[i], 100, stdin);
}
int length = strlen(string[i]);
for (i=0; i<=10; i++)
{
if(string[i][length] == 'd' && string[i][length -1] == 'e')
{
printf(" Index %d: %s \n", i, string[i]);
}
}
return 0;
}
感谢所有的输入家伙!然而,当我通过键盘输入字符串时,程序仍然不会输出结尾的字符串,它编译得很好。以下是我所修改的内容:
#include <stdio.h>
#include <string.h>
int main()
{
char string[10][100];
int i;
int length;
for (i =0; i < 10; i++)
{
printf(" Please enter a string for the array \n");
fgets(string[i], 100, stdin);
}
for (i=0; i< 10; i++)
{
length = strlen(string[i]);
if(length > 1 && (string[i][length - 1] == 'd' && string[i][length -2] == 'e'))
{
printf(" Index %d: %s \n", i, string[i]);
}
}
return 0;
}
问问自己:“长度的值是多少循环的每次迭代?“ – Gabe
这是一个很差的标题和说明。而不是“不起作用”,解释实际发生的事情,以及你期望发生的事情。使标题反映这一点。 –
您需要阅读http://stackoverflow.com/help/mcve,然后阅读http://ericlippert.com/2014/03/05/how-to-debug-small-programs/。它会帮助你比我们更多地给你解决方案。 – nonsensickle