1、fgets() 的使用
fgets()
是 C 语言中用于从指定文件流读取一行字符的函数。它通常用于从文件或标准输入(例如键盘)读取字符串。
1)从标准输入读取并输出
#include <stdio.h> int main() { char buffer[100]; // 用于存储输入字符串 printf("请输入一行文本:\n"); // 从标准输入读取一行,最多读取99个字符,留1个字符给终止符 '\0' if (fgets(buffer, sizeof(buffer), stdin) != NULL) { printf("你输入的文本是:%s", buffer); } else { printf("读取输入失败!\n"); } return 0; }
2)从文件中读取一行
#include <stdio.h> int main() { FILE *file; char buffer[100]; // 打开文件用于读取 file = fopen("example.txt", "r"); if (file == NULL) { printf("无法打开文件!\n"); return 1; } // 从文件中读取一行并输出 if (fgets(buffer, sizeof(buffer), file) != NULL) { printf("文件中第一行内容是:%s", buffer); } else { printf("读取文件失败!\n"); } // 关闭文件 fclose(file); return 0; }
2、解决问题换行符问题
要移除 fgets()
读取的字符串末尾的换行符,可以检查字符串的最后一个字符是否是 \n
,如果是,就将其替换为字符串结束符 \0
。
#include <stdio.h> #include <string.h> int main() { char buffer[100]; // 定义一个存储输入字符串的缓冲区 // 使用 fgets 读取输入 printf("请输入一行文本:"); if (fgets(buffer, sizeof(buffer), stdin) != NULL) { // 查找并移除换行符 size_t len = strlen(buffer); if (len > 0 && buffer[len - 1] == '\n') { buffer[len - 1] = '\0'; // 将换行符替换为字符串结束符 } printf("你输入的内容是:%s\n", buffer); // 打印移除了换行符后的字符串 } return 0; }
注意:如果输入的字符数超过缓冲区的大小,fgets()
读取的内容将不包含换行符,这时无需移除换行符。上面的代码已经考虑到了这种情况。
3、fputs()的使用
C 语言中,fputs()
是用于输出字符串的函数,它不会自动添加换行符,如要输出的内容换行,需要手动添加 \n
。
#include <stdio.h> int main() { char input[100]; printf("请输入一行文本:"); if (fgets(input, sizeof(input), stdin)) { // 使用 fputs 输出输入的字符串 fputs("您输入的内容为:", stdout); fputs(input, stdout); // 如果想要确保输出结束后换行,可以手动添加换行符 if (input[strlen(input) - 1] != '\n') { fputs("\n", stdout); // 手动加换行符 } } return 0; }
使用 fputs()
函数将字符串写入文件:
#include <stdio.h> int main() { // 定义要写入的字符串 char *str = "www.cjavapy.com"; // 以追加的方式打开文件,如果文件不存在则创建 FILE *fp = fopen("D:\\demo.txt", "at+"); // 检查文件是否成功打开 if (fp == NULL) { perror("文件打开失败"); return 1; } // 使用 fputs() 将字符串写入文件 if (fputs(str, fp) == EOF) { perror("写入失败"); fclose(fp); // 关闭文件 return 1; } // 成功写入后提示信息 printf("字符串已写入文件。\n"); // 关闭文件 fclose(fp); return 0; }