C语言定位到文件某一行

我看网上只有C++的,可是我比较喜欢C的文件操作,于是我自己写了一个

int GetSeek(FILE *fp,int line)	//必须是可读的指针,只有可写的不行 
{
	char ch;
	int i = 1;
	
	fseek(fp,SEEK_SET,0);
	if(fgetc(fp) == EOF){		//如果开头读取到结束符返回-1 
		return -1;
	}
	fseek(fp,SEEK_SET,0);		//确保指针在开头 

	while(!(line == i)){
		
		ch = fgetc(fp);		// 读取 
		if(ch == '\n'){
			i = i + 1;			//计数 
		}
		if(ch == EOF){		//如果读取中读到结束符返回-1 
			return -1;
		}
	}
	return 0;
}

觉得我写的还行麻烦点一下赞

重改了一下,试过了,可以了

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现修改配置文件中的某一行,可以按照以下步骤进: 1. 打开配置文件,使用 fopen 函数打开文件,打开方式为 "r+",即可读写的方式。例如: ```c FILE *fp; fp = fopen("config.ini", "r+"); if (fp == NULL) { printf("Error opening file!\n"); exit(1); } ``` 2. 定位需要修改的,可以使用 fgets 函数逐读取文件,使用 strcmp 函数判断读取的是否为需要修改的。例如: ```c char line[100]; int line_num = 3; // 假设需要修改第三 while (fgets(line, sizeof(line), fp)) { if (--line_num == 0) { // 找到需要修改的 break; } } ``` 3. 修改内容,可以使用 fputs 函数将修改后的内容写入到文件中。例如: ```c char new_line[100] = "new line content"; fseek(fp, -strlen(line), SEEK_CUR); // 回到需要修改的的开头 fputs(new_line, fp); // 写入修改后的内容 ``` 4. 关闭文件,使用 fclose 函数关闭文件。例如: ```c fclose(fp); ``` 完整的代码如下所示: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *fp; fp = fopen("config.ini", "r+"); if (fp == NULL) { printf("Error opening file!\n"); exit(1); } char line[100]; int line_num = 3; // 假设需要修改第三 while (fgets(line, sizeof(line), fp)) { if (--line_num == 0) { // 找到需要修改的 break; } } char new_line[100] = "new line content"; fseek(fp, -strlen(line), SEEK_CUR); // 回到需要修改的的开头 fputs(new_line, fp); // 写入修改后的内容 fclose(fp); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值