我正在制作的节目应该打印出仅在“结束”字符串中输出的字符串。这是我到目前为止所做的,但我不明白为什么它不起作用。我是否误解了使用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;
}
感谢所有输入的人!但是,该程序仍然没有输出结束于&#39;当我通过键盘进入它们时,它编译得很好。这是我修改过的内容:
#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;
}
答案 0 :(得分:3)
您的指数不正确。在C中,索引从0开始。第一个循环应该是:
for ( i = 0; i < 10; i++ )
第二个循环中的索引也不正确。他们应该是:
int length = strlen ( string[i] );
if( length > 1 && ( string[i][length-1] == 'd' && string[i][length -2] == 'e' ) )
在上面的陈述中,由于索引从0开始,最后一个元素将在length-1
。如果您的字符串是smiled
,则索引0处的字符为s
,最后一个字符位于索引5(d
),而字符串的长度为6。