C语言无法保存输入的数据

img


用这个保存文件的数据失败了
为什么重新退出之后信息又被清零了呢?还有就是颜值真是每次都需要避免的吗?

这个数组 questions 是一个内存的变量,每次程序运行,自然不会保留上次运行的结果
你得先用代码在程序运行开始的时候将questions.txt读取到数组

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7698198
  • 你也可以参考下这篇文章:【C代码】从键盘读入若干个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。
  • 除此之外, 这篇博客: 谁说五分钟不能看明白C语言的指针?中的 指针是在干嘛 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 举个简单的例子:

    • 你把你的小秘密写了一个纸条,放进了一个盒子,你打开这个盒子就可以看到小纸条,这是一种直接访问内存中数据的方式,也是我们最一般的数据访问方式。
      在这里插入图片描述

    • 你现在有很多盒子,有的盒子有一些小纸条,上面写着你的小秘密,另一些盒子写着你要去哪里找到这些有小纸条的盒子,这样,你就可以先找到有地址的盒子,再根据这个地址去找到你的小秘密。
      在这里插入图片描述

    • 那么,写着地址的小纸条也是小纸条,装着地址的盒子也是一个盒子,我们是不是可以有另一个盒子,装着一个纸条,上面有个地址,打开之后发现里面的纸条依旧写着地址,再继续下去,依旧写着地址……最后找到一个小秘密呢。
      可以,这就是多级指针,C语言运行你这样套娃,但我们不建议过度套娃,要自行承担看不懂程序的后果。
      在这里插入图片描述

  • 您还可以看一下 吴刚老师的【吴刚大讲堂】电商品牌文案设计方法课程中的 电商品牌文案设计方法介绍小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析: 根据问题描述,当使用C语言保存文件时,数据保存失败且在重新运行程序后之前保存的数据被清零。这可能有以下几个原因导致:

    1. 程序没有正确打开文件并进行写入操作。
    2. 文件打开方式不正确,导致写入失败或者数据被清空。
    3. 程序在重新运行时没有正确读取之前保存的数据。

    解决方案: 1. 确保程序正确打开文件并进行写入操作,一般使用fopen函数打开文件,使用fprintf函数将数据写入文件。 2. 确保文件打开方式正确,常见的打开方式有"r"(只读)、"w"(写入)、"a"(追加)等,默认以文本方式打开。 3. 在重新运行程序时,可以使用fread函数读取之前保存的数据。需要注意的是,读取数据之前需要使用fopen函数打开文件,并使用fclose函数关闭文件。

    以下是一个示例代码,演示了如何保存数据、重新运行程序时读取数据,并且保证数据的持久化:

    #include <stdio.h>
    
    int main() {
        int data = 10;
        FILE *file = fopen("data.txt", "w");  // 打开文件,以写入方式打开
        if (file != NULL) {
            fprintf(file, "%d", data);  // 将数据写入文件
            fclose(file);  // 关闭文件
        } else {
            printf("无法打开文件\n");
        }
    
        // 重新运行程序时读取之前保存的数据
        file = fopen("data.txt", "r");  // 打开文件,以只读方式打开
        if (file != NULL) {
            fscanf(file, "%d", &data);  // 从文件中读取数据
            fclose(file);  // 关闭文件
            printf("读取的数据为:%d\n", data);
        } else {
            printf("无法打开文件\n");
        }
    
        return 0;
    }
    

    这样就可以确保在重新运行程序时,之前保存的数据仍然存在。

    对于颜值问题,通常是指在保存文件时,文件中的内容显示不正常,可能出现乱码等情况。解决颜值问题的方式取决于文件的编码方式以及读写操作的方式。

    如果文件编码方式是UTF-8,保存的数据中包含中文等字符,那么在读取文件时,需要使用相同的编码方式进行读取。如果文件编码方式是ASCII或者其他编码方式,可以使用文本编辑器打开文件,选择正确的编码方式打开,查看文件中的内容是否正常。

    如果存在特殊字符或者乱码问题,可以考虑使用二进制方式保存文件,而不是文本方式。可以使用fwrite函数进行二进制写入,使用fread函数进行二进制读取。这样可以确保文件中的内容在保存和读取过程中不会发生变化,也不会出现颜值问题。