C语言操作文件 —— 筛选出文件中带有空格的数据行

代码思路:

  1. 打开文件
  2. 把指针指到文件开头处
  3. 遍历每一行数据
  4. 遍历这一行数据,判断空格,写文件
  5. 关闭文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	int len,i;
	char tmpBuf[128];
	FILE *fp;
	FILE *fp2;
			
	fp = fopen("input.txt","r");
	fp2 = fopen("output.txt","w+");
    if((fp == NULL) || (fp2 == NULL))
    {
        printf("fopen failed\n");
		return -1;
    }
	rewind(fp); //指针指向文件开头
	
	memset(tmpBuf,0, sizeof(tmpBuf));
	
	while (fgets(tmpBuf,128,fp)!=NULL)   //读一行内容
	{ 		
		len = strlen(tmpBuf);
		tmpBuf[len-1] = '\0';    //去掉换行符
		
		if(len > 1)
		{
			for(i=0;i<len-1;i++)
			{
				if(tmpBuf[i] == ' ')
				{
					fputs(tmpBuf,fp2);
					fputs("\n",fp2);
					break;
				}
			}
		}  		
		memset(tmpBuf, 0, sizeof(tmpBuf));
	} 
	fclose(fp);
    fclose(fp2);
	return 0;	
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言,要删除文件的一数据,可以按照以下步骤进操作: 1. 打开原文件并创建一个文件。 2. 逐读取文件数据。 3. 如果该数据不是要删除的数据,则将该数据写入新文件。 4. 如果该数据是要删除的数据,则不将该数据写入新文件。 5. 关闭原文件和新文件。 6. 删除原文件并将新文件重命名为原文件名。 以下是一个示例代码: ```c #include <stdio.h> #include <stdlib.h> int main() { FILE *fp1, *fp2; char filename[100], ch; int delete_line, temp = 1; printf("Enter file name: "); scanf("%s", filename); // 打开原文件 fp1 = fopen(filename, "r"); if (fp1 == NULL) { printf("File does not exist.\n"); exit(0); } // 创建一个文件 fp2 = fopen("temp.txt", "w"); printf("Enter the line number you want to delete: "); scanf("%d", &delete_line); // 逐读取文件数据 while ((ch = fgetc(fp1)) != EOF) { // 如果该数据不是要删除的数据,则将该数据写入新文件 if (temp != delete_line) { fputc(ch, fp2); } // 计算数 if (ch == '\n') { temp++; } } // 关闭原文件和新文件 fclose(fp1); fclose(fp2); // 删除原文件并将新文件重命名为原文件名 remove(filename); rename("temp.txt", filename); printf("The contents of file after deleting a line:\n"); fp1 = fopen(filename, "r"); ch = fgetc(fp1); while (ch != EOF) { printf("%c", ch); ch = fgetc(fp1); } fclose(fp1); return 0; } ``` 运代码后,程序会先提示输入要操作文件名,然后提示输入要删除的数。程序将会删除指定数的数据,并将结果输到控制台。注意,程序会直接操作文件,因此请务必备份好原文件

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值