void ReadFile(int *key){
int i ,flag ,j;
*key = 0;
char fileName[20];
for(i=0; i<60; i++){
binary[i].ch = '\0';
binary[i].num = 0;
}
printf("\n\t\t\t请输入文件名:");
scanf("%s", fileName);
FILE *fp = fopen(fileName,"r+");
if(fp == NULL){
perror("打开文件失败啦");
//printf("文件打开失败!\n");
exit(1);
}
fgets(text, MAX, fp);
printf("\n\t\t\t%s\n\n", text);
for(i=0; i<MAX; i++){
if(text[i] == '\0'){
textLen = i;
break;
}
}
for(i=0; i<textLen; i++, flag=0){
for(j=0; j<(*key); j++){
if(binary[j].ch == text[i]){
binary[j].num++;
flag = 1;
}
}
if(flag == 0){
binary[*key].ch = text[i];
binary[*key].num += 1;
(*key)++;
}
}
printf("\t\t\t文件共有%d种字符,文件总字符数为%d", *key, textLen);
fclose(fp);
}
在判断fp == null的时候直接返回
用 perror()返回No such file or directory
求大佬讲解一下该怎么办
要把test1文件,放到编译后的可执行文件的同级文件夹下。
你直接输入文件名,程序并不知道它所在的路径啊,你最好输入完整的文件路径
fileName 要初始化,这样 char fileName[20] = {0};
打开文件的时候如果没有输入路径,程序会从当前项目目录下查找,这就需要把文件放在项目目录下,或者在输入文件名的时候把路径也一起输入。
另外,建议char fileName[20];初始化一下:char fileName[20] ={0};
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632