这是我的一个实验报告的内容:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
int hang,da,xi,shu,qt;
int count_file(FILE *fp,int *da,int *xi,int *shu,int *qt);
if((fp = fopen("a.txt","r")) == NULL)
{
printf("不能打开文件!\n");
exit(0);
}
hang=count_file(fp,&da,&xi,&shu,&qt);
fclose(fp);
printf("行数为:%d\n",hang);
printf("大写字母个数为:%d\n",da);
printf("小写字母个数为:%d\n",xi);
printf("数字个数为:%d\n",shu);
printf("其他字符个数为:%d\n",qt);
return 0;
}
int count_file(FILE *fp,int *da,int *xi,int *shu,int *qt)
{
int hang;
char ch;
hang=0,*da=0,*xi=0,*shu=0,*qt=0;
while(!feof(fp))
{
if((ch=fgetc(fp)) == EOF) break;
if(ch=='\n') hang++;
else if(ch>='A' && ch<='Z') *da=*da+1;
else if(ch>='a' && ch<='z') *xi=*xi+1;
else if(ch>='0' && ch<='9') *shu=*shu+1;
else *qt=*qt+1;
}
return hang+1;
}
但是我不明白的是为什么我在定义 count_file函数的时候是int型,也是用的int定义的hang。
但如果我把count_file(FILE *fp,int *da,int *xi,int *shu,int *qt)改成count_file(FILE *fp,int da,int x,int shu,int qt).
在hang=count_file 这一行就会报c4707的警告.为什么函数的形参会影响这个呢?求大神解答!
你传的实参是&类型,即地址类型,形参是数据类型,类型不匹配且无法转化,系统在你调用这个函数的地方报错,没毛病。
系统看来,你的自定义函数没有问题,但是你的调用产生问题,所以在那行报错,4707应该就是类型不匹配
您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632