#include<stdio.h>
int main()
{
char str[6][50] ; // a 2d character array
int i ;
for(i = 0 ; i < 6 ; i++)
{
scanf("%s",(str+i)) ; // in here the warning was shown
}
return 0 ;
}`
输出期间: - scanf()在编译时显示警告 - 警告:格式'%s'需要类型为'char '的参数,但参数2的类型为'char()[50]'[ - Wformat =] < / p>
答案 0 :(得分:2)
还记得数组自然地衰减到指向第一个元素的指针吗?这意味着str
本身被视为指针。使用str + i
,您正在进行指针运算,其结果是另一个指针(在本例中为i:th元素)。该指针的类型是指向数组的指针char (*)[50]
,它不是数组本身。
您需要做的是取消引用指针:*(str + i)
。或者它是相同的,str[i]
。
答案 1 :(得分:0)
您似乎正在尝试依次访问str的每个元素。为此,请使用scanf("%s",str[i]);
(根据usr的评论)。