C语言基础--------逐行从文件读文本fscanf

本文介绍了一段C语言代码,用于从文本文件中逐行读取内容。通过使用fscanf函数,结合%s和%c格式化说明符,程序能够处理包括空格在内的文本,并能适配不同操作系统的换行符。代码示例中,当读取到文件末尾时,会返回EOF标志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<string.h>
const char * path="text.txt";
char s[2000];
char c;	
int main()
{
	
	FILE * fp=fopen(path,"r");
	if(fp==NULL)
		printf("error: file not found");
	/*
	说明:scanf(%s)不读空格 fscanf(%c)可以
			^\n表示读到换行为止 加上%c吃掉行末的回车 可以循环读行 
				windows下换行是\r\n (回车换行)
				linux: \n Mac:\r
	*/
	while(fscanf(fp,"%[^\r\n]%c",&s,&c)!=EOF)
	{		
		if(s!="")		 	
		{
			fputs(s,stdout);
			printf("\n");
			memset(s,0,sizeof(char));
		}	
		else
			printf("error: no content");		
	}
	fclose(fp);
	return 0;	
}

### C语言文件操作经典例题 #### 文件写操作示例 下面展示的是如何利用`fprintf`和`fscanf`来实现结构体数据的存储与读取。此过程不仅涉及到了基本的数据输入输出,还涵盖了错误处理以及资源释放等内容。 ```c #include <stdio.h> struct Student { char name[20]; int age; float score; }; int main() { struct Student stu = {"Alice", 20, 87.5}; /// 创建并打开用于写的文件 FILE *fp_write = fopen("students.dat", "wb"); if (!fp_write) { perror("Failed to open file for writing"); return -1; } fwrite(&stu, sizeof(struct Student), 1, fp_write); fclose(fp_write); /// 打开用于读取刚才创建的二进制文件 FILE *fp_read = fopen("students.dat", "rb"); if (!fp_read) { perror("Failed to open file for reading"); return -1; } struct Student read_stu; fread(&read_stu, sizeof(struct Student), 1, fp_read); printf("Name: %s\nAge: %d\nScore: %.2f\n", read_stu.name, read_stu.age, read_stu.score); fclose(fp_read); return 0; } ``` 上述代码展示了通过二进制模式(`b`)来进行学生信息的存盘与加载[^1]。 #### 处理大文本文件的例子 对于较大的纯文本日志或其他类型的大型文本文件来说,逐行入可能是更高效的方式之一: ```c #include <stdio.h> #define MAX_LINE_LENGTH 256 void process_large_text_file(const char *filename) { FILE *file_ptr = fopen(filename, "r"); if (file_ptr != NULL) { char line[MAX_LINE_LENGTH]; while(fgets(line, sizeof(line), file_ptr)) { // 对每一行执行特定的操作... puts(line); // 这里简单打印出来作为示范 } fclose(file_ptr); } else { perror("Error opening file."); } } int main(){ const char* filename="large_log.txt"; process_large_text_file(filename); return 0; } ``` 这段程序会尝试按照行的形式逐步解析指定的大尺寸文本文件,并针对每一条记录采取适当措施[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值