0

我正在编译我的工作,无论我如何编辑我的代码,这个错误都会不断出现:

expected expression before ‘char’

format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’

从第二个错误开始,我尝试使用类型转换,但问题确实存在。有谁知道怎么做?这是我的代码的一部分:

while ( char my_wget (char web_address[BUFLEN]) != EOF ) {
    printf ("%s", (char) web_address[BUFLEN]);
4

3 回答 3

2

因为你在你写的地方有一个语法错误,这charchar不允许的。

也许你想到了:

int ch;
char web_address[BUFLEN];

while ((ch = my_wget(web_address)) != EOF)
    printf("%s\n", web_address);

使用正确的my_wget()around 声明(例如extern int my_wget(char *buffer);),应该可以编译。你不能到处声明变量。

第二个错误是因为web_address[BUFLEN]是一个字符(当然在我的代码中;它似乎也在你的代码中,因为编译器设法识别出足以生成错误的类型)。如果您像我一样声明它,它也是超出数组末尾的一个。将char值(可能是 8 位数量)视为地址(指针;可能是 32 位或 64 位数量)是错误的,这就是编译器抱怨的原因。

于 2013-03-12T05:23:48.017 回答
1

printf()语句中,尝试将部分更改charchar* Same 适用于while循环中的条件。char将之前更改web_address(char*)

我觉得你"char"以前写的很奇怪my_wget()。你能更具体一点吗?

于 2013-03-12T05:23:39.797 回答
1

请参阅下面的此代码

#include <stdio.h>

int main()
{
char c;
printf ("%s",  st);
}

当我编译它时,我得到了同样的警告信息。

 warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’

所以我将程序更改为

#include <stdio.h>

int main()
{
char *str = "string";
printf ("%s",  st);
}

现在程序可以正确编译。

所以作为一个 c 的新手,这就是你学习语言的方式,写最小的例子,以证明你对这个概念有牢牢的把握。

于 2013-03-12T06:49:41.183 回答