0

所以我输入了以下内容:

typedef char array[25];

在我的代码中,我像这样调用 scanf :

scanf("%s",array);

但是当我通过 char*[25] 时,我收到 %s 期待 char* 的警告。有没有办法摆脱这个警告?

4

3 回答 3

0

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);

希望你是清楚的核心!:)

于 2013-04-18T13:23:43.250 回答
0

array是类型而不是对象。你不能将它作为参数传递给scanf

array a;
scanf("%s", a);
于 2013-04-18T13:15:49.897 回答
0

我假设您的代码是缩写的...

警告的实际原因是编译器知道两件事:您有一个长度有限的 char 数组,并且 scanf 将扫描原始字符串中给出的尽可能多的字符;可能会溢出为他们提供的数组。

这是一个真正的问题:编译器非常正确。

解决方法是更好地指定scanf格式。在这种情况下,我建议使用“%24s”来告诉 scanf 为该格式元素读取的最大字符数。

请记住允许空终止符 - 更好,明确地将数组 [len-1] 设为 0。

读取字符串的方法可能比 scanf 更好。例如,查看一些基于令牌的方法。

HTH,露丝

于 2013-04-18T14:07:59.717 回答