我正在编译我的工作,无论我如何编辑代码,这个错误都会出现:
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]);
答案 0 :(得分:2)
由于您在编写char
时遇到语法错误,因此不允许使用char
。
也许你想到了:
int ch;
char web_address[BUFLEN];
while ((ch = my_wget(web_address)) != EOF)
printf("%s\n", web_address);
使用my_wget()
周围的正确声明(例如extern int my_wget(char *buffer);
),应编译。你无法在任何地方声明变量。
第二个错误是因为web_address[BUFLEN]
是一个字符(当然在我的代码中;它似乎也在你的代码中,因为编译器设法充分识别类型以产生错误)。如果你像我一样声明它,它也是超出数组末尾的那个。将char
值(可能是8位数量)作为地址(指针;可能是32位或64位数量)处理是错误的,这就是编译器抱怨的原因。
答案 1 :(得分:1)
在printf()
声明中,尝试将部分char
更改为char*
同样适用于while
循环中的条件。将char
之前的web_address
更改为(char*)
我觉得你在"char"
之前写my_wget()
很奇怪。你能更具体一点吗?
答案 2 :(得分: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的新手,这就是你学习语言的方法,写出最小的例子,证明你对这个概念有一个坚定的把握。