c语言二进制文件读写

想问问为什么程序运行不起来,不知道哪有问题,编程要求编写程序,把10000以内个位数字的立方等于其本身的所有的数存入二进制文件中。从该二进制文件中读取数据,在显示器上输出。

img

img

程序没有从输入获取文件地址,然后也没有重新从文件读取输入的内容,所以输出不对;

可以先使用gets()读取一个文件地址到字符数组a,然后在写入文件后,重新读取并显示一下文件内容即可。

修改如下:

参考链接:


feof()原理和用法_konghouy的博客-CSDN博客 一、feof()是什么? feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0一般在文件操作,中经常使用feof()判断文件是否结束。二、feof()的经典错误根据这个函数的定义,一般大家都是这样使用的,但是这样使用,文件中无论是否有内容,都会被判断为“文件不为空”。#include<stdio.h>int mai..._feof https://blog.csdn.net/konghouy/article/details/80530937


#include <stdio.h>
#include <stdlib.h>

int main(void){
    
    char a[1000];
    printf("请输入要保存的文件名");
    gets(a);  // 获取输入的文件名 
    FILE* fp= NULL;
    

//    int j=0;
//    
//    while((a[j]=fgetc(fp))!=EOF){
//        j++; 
//    }
    
    fp = fopen(a,"w+");
    for(int i=1;i<10000;i++){
        int c=i%10;
        if(c*c*c==i){
            fprintf(fp,"%d ",i);
        }
    }
    
    rewind(fp);
    //printf("729");
    
    int num;
    // 从文件读取写入的结果 
    while(feof(fp)==0){
        fscanf(fp,"%d",&num);
        // 如果不需要重复输出最后的729,则使用这个if条件下的输出 
        // http://c.biancheng.net/c/feof.html
        // https://blog.csdn.net/konghouy/article/details/80530937 
//        if(feof(fp)==0){
//            printf("%d ",num);
//        }
        // 如果最后的729需要重复输出,直接使用这个printf打印语句即可 
        printf("%d ",num);
    }
    
    fclose(fp);
    
    return 0;
    
    
    
}
 


img

不熟悉C语言,但是你这个代码第一眼看到的问题是:第8行执行时,fp应该还是空指针,应该先给指针赋值

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^