zhuaizhai 2024-03-09 20:26 采纳率: 90.5%
浏览 9
已结题

(标签-C语言|关键词-user)

C语言输入n个用户的名字,将用户名字存入user.txt文件中,最后从user.txt文件中读出所有用户并输出显示。(粘贴源代码到答题处)提示:
用户名不超过20个字符;
对文件进行存取操作时,建议使用fprintf和fscanf函数。

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-09 20:26
    关注

    引自免费微信小程序:皆我百晓生

    当然可以,以下是一个使用C语言实现的示例程序,该程序会提示用户输入n个名字并将它们写入到user.txt文件中,然后从该文件读取并输出所有用户名:

    #include <stdio.h>
    #include <string.h>
    
    #define MAX_NAME_LENGTH 20 // 定义用户名的最大长度
    
    int main() {
        FILE *filePtr;
        char name[MAX_NAME_LENGTH + 1];
        int n, i;
    
        // 获取用户要输入的名字数量
        printf("请输入要输入的名字数量:");
        scanf("%d", &n);
    
        // 打开或创建文本文件以写入
        filePtr = fopen("user.txt", "w");
        if (filePtr == NULL) {
            printf("无法打开或创建文件user.txt\n");
            return 1;
        }
    
        // 循环输入并写入n个名字
        for (i = 0; i < n; i++) {
            printf("请输入第%d个名字(不超过20个字符): ", i + 1);
            fgets(name, MAX_NAME_LENGTH + 1, stdin); // 使用fgets处理可能存在的换行符
            name[strcspn(name, "\n")] = '\0'; // 去掉末尾的换行符
            fprintf(filePtr, "%s\n", name); // 写入名字,并在每个名字后加换行符以便于后续读取
        }
    
        fclose(filePtr); // 关闭文件
    
        // 打开文件进行读取
        filePtr = fopen("user.txt", "r");
        if (filePtr == NULL) {
            printf("无法打开文件user.txt进行读取\n");
            return 1;
        }
    
        printf("读取并显示所有用户名:\n");
        while (fscanf(filePtr, "%s", name) == 1) { // 读取一行作为用户名
            printf("%s\n", name);
        }
    
        fclose(filePtr); // 关闭文件
    
        return 0;
    }
    

    这个程序首先获取用户想要输入的名字数量,接着循环让用户输入名字并将它们写入user.txt文件。最后,它重新打开文件并逐行读取和显示所有已存储的名字。注意,在读取时,我们使用了fscanf函数来读取字符串,并通过\n分隔每个名字。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月9日