c语言获取文件第n行数据

运行环境:ubuntu 64bit

实现方法:使用fscanf偏移文件位置,再对文件进行读取。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
	/* code */
	FILE *fin;
	char buf[1024];

	int x,y;
	int i;
	fin = fopen("/home/mycode/abc.txt","r");
	for(i = 0;i < 2;i++)
	{
		fscanf(fin,"%*[^\n]%*c");
		/******************************************************
			%*		:	是“跳过”
			[^\n]	        :	字符串的分隔符是"\n", 中括号里可以写 分隔符 表
			%*[^\n]         :	跳过 \n 前的所有字符串。
			%*c 	        :	是“跳过”行尾 的 换行符
		******************************************************/
	}
	//while((fgets(buf,1024,fin)) != NULL)
	#if 0
	//这里获取第3行到文件尾的数据
	while(fgets(buf,1024,fin))
	{
		printf("buf : %s\n", buf);
		memset(buf,0,1024);
	}
	#endif
	//这里只是获取第3行数据
	fgets(buf,1024,fin);
	printf("buf : %s\n",buf );
	fclose(fin);

	return 0;
}

结果如下:

### C语言读取TXT文件数据 在C语言中,可以使用`fgets`函数来实现从TXT文件中按读取数据的功能。以下是详细的说明以及示例代码。 #### 使用 `fgets` 实现按读取 `fgets` 是一个标准库函数,可以从文件流中读取一整的内容,直到遇到换符 `\n` 或到达缓冲区大小限制为止。它的原型如下: ```c char * fgets(char * str, int num, FILE * stream); ``` 其中: - `str` 是用于存储读取内容的字符数组。 - `num` 表示最大读取长度(包括终止符`\0`),通常设置为比实际缓冲区大1。 - `stream` 是指向要读取文件的FILE指针。 当成功读取时返回非空指针;如果到达文件末尾或者发生错误,则返回 NULL[^5]。 下面是一个完整的程序示例展示如何利用此方法完成任务: ```c #include <stdio.h> #define MAX_LINE_LENGTH 1024 // 定义每一的最大长度 int main(void){ FILE* fp = fopen("example.txt", "r"); // 打开名为 example.txt 的文本文件 if (!fp){ // 如果无法打开文件则打印错误消息并退出 perror("File opening failed"); return EXIT_FAILURE; } char line[MAX_LINE_LENGTH]; // 创建足够大的缓冲区保存每文字 while(fgets(line,sizeof(line),fp)!=NULL){ // 循环调用 fgets获取每一直至结束 printf("%s",line); // 输出当前所得到的一到屏幕 } fclose(fp); // 关闭已使用的文件资源 return EXIT_SUCCESS; // 正常结束应用程序运状态码设为零表示无误执完毕 } ``` 以上代码片段展示了基本流程:先尝试打开目标文件,接着定义适当尺寸的字符数组作为临时容器存放每次取出的结果,并通过不断重复调用来遍历整个文档内容最后记得释放关联句柄以防止泄露问题出现。 #### 注意事项 - 需要注意的是,在Windows平台上,文本模式下的换序列会被解释成两个字符 (`\r\n`) 而不是单个 Unix/Linux风格的新标记(`\n`) 。因此可能需要额外清理这些多余的回车符号。 - 另外还需考虑边界情况比如超出缓存设定值等情况可能导致截断丢失部分信息所以应该合理规划参数配置避免此类风险发生。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值