关于二维数组输入问题

先放一下代码
#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但结果还是一样

你要输出什么 , 我就拿我发现的问题吧

  1. 字符串数组 应该是二维数组 而不是 一维数组 。 char c[10][100] ;
  2. malloc 应该转换成指针char*类型,而不是 char 类型
  3. 输入 %s 不应该是 a + i 因为 a 是 char 字符 类型的 , 而不是字符串。

最重要的是插入代码请使用 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");
            }
        }
    }



}