所以我输入了以下内容:
typedef char array[25];
在我的代码中,我像这样调用 scanf :
scanf("%s",array);
但是当我通过 char*[25] 时,我收到 %s 期待 char* 的警告。有没有办法摆脱这个警告?
所以我输入了以下内容:
typedef char array[25];
在我的代码中,我像这样调用 scanf :
scanf("%s",array);
但是当我通过 char*[25] 时,我收到 %s 期待 char* 的警告。有没有办法摆脱这个警告?
typedef定义了一种数据类型,以便您可以使用它来定义具有相同数据类型的不同变量。喜欢:
typedef char employee[25];
typedef char customer[25];
employee a, b;
customer y, z;
printf("Enter first employee's name: ");
scanf("%s",a);
printf("Enter customer's name: ");
scanf("%s",y);
虽然数据类型是相同的,但定义它们是详细的事情。你需要做的就是:array a;
然后scanf("%s",a);
希望你是清楚的核心!:)
array
是类型而不是对象。你不能将它作为参数传递给scanf
array a;
scanf("%s", a);
我假设您的代码是缩写的...
警告的实际原因是编译器知道两件事:您有一个长度有限的 char 数组,并且 scanf 将扫描原始字符串中给出的尽可能多的字符;可能会溢出为他们提供的数组。
这是一个真正的问题:编译器非常正确。
解决方法是更好地指定scanf格式。在这种情况下,我建议使用“%24s”来告诉 scanf 为该格式元素读取的最大字符数。
请记住允许空终止符 - 更好,明确地将数组 [len-1] 设为 0。
读取字符串的方法可能比 scanf 更好。例如,查看一些基于令牌的方法。
HTH,露丝