gpt4 book ai didi

c - 如何用C语言修改文本文件的内容

转载 作者:行者123 更新时间:2023-11-30 19:33:24 25 4
gpt4 key购买 nike

我的文本文件包含类似 -
的数据(项目)(项目数量)

mobile 5
book 6
pen 2
laptop 7

我想修改文本文件中的笔号。

例如:我想将笔的计数值减 1。所以,我的文本文件运行后应该是这样的:

mobile 5
book 6
pen 1
laptop 7

我尝试使用 fscanf 和 fprintf 函数,但没有成功。

#include <stdlib.h>
#include<string.h>
#include<stdio.h> // For exit() function
int main()
{
int i;
char c[1000];
char *str="mobile";
FILE *fptr;

if ((fptr = fopen("out.txt", "r+")) == NULL)
{
printf("Error! opening file");
// Program exits if file pointer returns NULL.
exit(1);
}

// reads text until newline
char buf[100];
int item;
char* temp[10];
/*
for(i=0;i<5;i++)
{
fscanf(stdin, "%s %d",buf, &item);
fprintf(fptr, "%s %d\n",buf, item);
}
*/
for(i=0;i<5;i++)
{
fscanf(fptr,"%s %d", buf , &item);
if(strstr(buf,str))
{
fprintf(fptr,"%s %d",buf ,item+1);
}
}

fclose(fptr);

return 0;
}

请帮我解决这个问题。

最佳答案

FILE *fptr_read;
FILE *fptr_write;
int offset = 0;

if ((fptr_read = fopen("out.txt", "r")) == NULL)
{
printf("Error! Can't open file for reading");
// Program exits if file pointer returns NULL.
exit(1);
}

if ((fptr_write = fopen("out.txt", "w")) == NULL)
{
printf("Error! Can't open file for writing");
// Program exits if file pointer returns NULL.
exit(1);
}

当您选择写入文件时,您必须将文件中的指针移动到特定的文件位置

for(i=0;i<5;i++)
{

fscanf(fptr,"%s %d", buf , &item);

if(strstr(buf,str))
{
current_pos = ftell(fptr_read) //gets position of file pointer for the read
fseek(fptr_write, current_pos, SEEK_SET) //sets file pointer of write to read (basically overwrite at that position)
fprintf(fptr_write,"%s %d",buf ,item-1); //subtract one not add one
}

}

关于c - 如何用C语言修改文本文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com