先放一下代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int b,i,d=-1;
char a;
scanf("%d",&b);
char c[10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
a=(char)malloc((b+2)sizeof(char));
这里用的是二维数组指针(被省略了)
for(i=0;i<b;i++)
{
scanf("%s\n",a+i);
}
for(i=0;i<b;i++)
{
for(int j=0;j<7;j++)
{d=strcmp(a+i,*(c+j));
if(d==0)
{
printf("%d\n",j+1);
break;
}
if(j==6)
{
printf("-1\n");
}
}
}
printf("%s\n",a+1);
}
用以上代码输入下面数据时倒数第二行输入时不知道为啥还会将最后一行数据一并输入进去
3
Tuesday
Wednesday
year
结果
3
-1
-1
Wednesdayear
此处最后一行输出为二维数组指针存入的第二行数据
但原本应该是存入Wednesday但不知为何还会将下一行的year一并存入
尝试过用gets但结果还是一样
你要输出什么 , 我就拿我发现的问题吧
最重要的是插入代码请使用 Markdown 语法正确插入 用 ``` 两个3个连续的反引号包裹代码!
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main() {
int b = 0;
char c[7][10] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
scanf("%d", &b);
char input[b][100] = {0};
fflush(stdin);
for ( int i = 0 ; i < b ; i++) {
gets(input[i]);
}
for ( int i = 0 ; i < b ; i++ ) {
for( int j = 0 ; j < 7 ; j++ ) {
if( strcmp(input[i],c[j]) == 0 ){
printf("%d\n",j);
break;
} else if( j+1 == 7 ){
printf("-1\n");
}
}
}
}