C语言 有关C4704警告的提问(小白)求大神解答一下!

这是我的一个实验报告的内容:

#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