![](/img/trans.png)
[英]warning: incompatible pointer types passing 'char *' to parameter of type 'FILE *' (aka 'struct __sFILE *')
[英]how to fix incompatible pointer types passing 'char [16]' to parameter of type 'FILE *' (aka 'struct __sFILE *') [-Wincompatible-pointer-types]
怎么修?
警告:
不兼容的指针
类型,将'char [16]'传递给'FILE *'类型的参数
(aka'结构__sFILE *')[-Wincompatible-pointer-types]
fread(缓冲区,1,512,数据);
^ ~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/
SDK / MacOSX10.13.sdk / usr / include / stdio.h:247:90:注意:
在此处将参数传递给参数“ __stream”
...__ ptr,size_t __size,size_t __nitems,FILE * __restrict __stream);
^
产生1条警告。
这是我的代码:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
char readDATA[64];
char buffer[8];
char data[16];
FILE *fl = fopen(data,"r");
fgets(readDATA,64,fl);
fread(buffer,1,512,data);
printf("%s",readDATA);
return 0;
}
我尝试打开路径或“随机”文件,请帮忙。
根据fread()
手册页
函数fread()从stream指向的流中读取每个长度为字节大小的nmemb数据元素,并将它们存储在ptr给定的位置。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
fread()
最后一个参数是FILE *stream
,它表示要从中读取内容并将其存储到buffer
。
更换
fread(buffer,1,512,data); /* last argument is wrong */
同
fread(buffer,1,512,f1);
还要检查fopen()
的返回值
FILE *f1 = fopen("data","r"); /* it will try to open a file called "data" in current working directory, you can take input from user also */
if(f1 == NULL) {
fprintf(stderr, "file not present\n");
return 0;
}
你的意图可能是这样
char data[16];/* it doesn't contain anything, so take the input from user or assign directly */
printf("enter the file name\n");
scanf("%s",data);
FILE *f1 = fopen(data,"r");
if(f1 == NULL) {
fprintf(stderr, "file not present\n");
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.