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;
}