c语言 这句编译错误是什么意思? 第167行长这样“ if((fp=fopen(*filename,"r"))==NULL)”

client.c:167:error:passingargument1of‘fopen’makespointerfromintegerwithoutacast/usr/i... client.c:167: error: passing argument 1 of ‘fopen’ makes pointer from integer without a cast
/usr/include/stdio.h:271: note: expected ‘const char * __restrict__’ but argument is of type ‘char’
展开
 我来答
KummerWu
2013-04-28 · TA获得超过694个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:419万
展开全部
fopen第一个参数传入的是一个字符串。(const char * )
而你传入的是一个*filename ,也就是一个字符串取值,也就是一个字符。

所以报错说,
expected ‘const char * __restrict__’ 期望是一个const char *类型的参数
but argument is of type ‘char’ 但你传入的是一个字符(char)类型的参数。

所以filename前不要有*号
金色潜鸟
推荐于2018-05-09 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5720万
展开全部
去掉星号:
if((fp=fopen(filename,"r"))==NULL)

char filename[80]; 或 char *filename;
调用 fopen 时 用 fp=fopen(filename,"r") ...
追问
可是我的filename是个pointer呀,不用加星号么?
追答
声明里有星号,调用里/语句里 有星号是值,无星号是指针。
char *filename; // 声明里有星号,是指针
...
fp=fopen(filename,"r") // 调用里/语句里 无星号是 指针调用
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
986450042
2013-04-28 · TA获得超过1131个赞
知道小有建树答主
回答量:292
采纳率:100%
帮助的人:92.2万
展开全部
filename出问题了,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式