C语言 文件关于fputs函数

从键盘输入若干字符,每行不超过100个字符,以单独一个!表示结束,将每行开头为大写字母的行内容存入d盘根目录下的文本文件1.txt中,用fputs函数


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

int main() {
    char line[101];  // 用于存储每行输入的字符
    FILE *fp;  // 文件指针
    fp = fopen("D:\\1.txt", "w");  // 以写入模式打开文件
    if (fp == NULL) {  // 文件打开失败
        printf("Failed to open file!\n");
        exit(1);  // 异常退出程序
    }

    while (1) {  // 循环读入每行字符
        fgets(line, 100, stdin);  // 从键盘读入每行字符,最多读入100个字符
        if (*line == '!') {  // 输入'!'表示结束
            break;
        }
        if (*line >= 'A' && *line <= 'Z') {  // 如果开头为大写字母
            fputs(line, fp);  // 将该行字符写入文件
        }
    }

    fclose(fp);  // 关闭文件
    return 0;
}

```

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    
    int main() {
        char input[101]; // 声明一个长度为101的字符数组,用于存储输入的行
        FILE *fp; // 声明一个指向文件的指针
    
        fp = fopen("1.txt", "w"); // 以写入模式打开文件
    
        if(fp == NULL) { // 如果文件打开失败
            printf("Error opening file!\n"); // 输出错误信息
            return 1; // 返回1,结束程序
        }
    
        while(1) { // 无限循环
            printf("Enter a line (ends with !): "); // 提示用户输入
            fgets(input, sizeof(input), stdin); // 从标准输入获取输入行
    
            if(input[0] == '!') { // 如果输入行以!开头
                break; // 跳出循环
            }
    
            if(isupper(input[0])) { // 如果输入行第一个字符是大写字母
                fputs(input, fp); // 将输入行写入文件
            }
        }
    
        fclose(fp); // 关闭文件
    
        return 0; // 返回0,结束程序
    }
    

    提示: - 使用fgets获取输入行,sizeof(input)是为了避免输入行超出数组范围 - 使用isupper判断输入行第一个字符是否为大写字母 - 使用fputs将输入行写入文件中 - 使用!作为输入行的结束标志,并在循环中判断是否输入了结束标志


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

供参考:https://baike.baidu.com/item/fputs/10942345