C语言 在txt文件中找到指定的字符串,并从数字中减去相同的值

vaqhlq81  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(87)

目标:我在Visual Studio 2022中使用C语言,将 C:/Users/13383/Desktop/storage.txt 文件中的“_”后的序号减少7252,storage.txt 中的数据如下图所示:

...

"STORAGE_7253":
...
"STORAGE_7254":
...
"STORAGE_7255":
...

字符串

**已经完成:**我的程序如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LINE_LENGTH 1000

int main() {
    FILE* fp;
    char line[MAX_LINE_LENGTH];
    char* pos;
    int num;

    if (fopen_s(&fp, "C:/Users/13383/Desktop/storage.txt", "r+") != 0) {
        printf("Error opening file\n");
        exit(1);
    }

    while (fgets(line, MAX_LINE_LENGTH, fp) != NULL) {
        pos = strstr(line, "STORAGE_");
        if (pos != NULL) {
            num = atoi(pos + strlen("STORAGE_"));
            printf("%d\n", num);
            num -= 7252;
            sprintf_s(pos + strlen("STORAGE_"), MAX_LINE_LENGTH - (pos - line) - strlen("STORAGE_"), "%d\"", num);
            puts(line);
        }
        //fputs(line, fp);
    }

    fclose(fp);
    printf("Done!\n");
    return 0;
}

**问题:**当我注解掉fputs(line, fp);时,我发现变量“line”的内容是正确的:

x1c 0d1x的数据
但是当我取消注解“fputs”以在document中写入字符串时,它提示一个错误:



所以我想知道是什么问题以及如何解决?

frebpwbc

frebpwbc1#

最佳修复:
以只读方式打开“storage.txt”文件-我们称之为文件
打开“new.storage.txt”文件进行输出-我们称之为ofile
输入从文件读取循环

Read line from ifile
Process line
Write line to ofile

字符串
关闭文件
关闭文件
如果新文件创建成功,将文件重命名为“yyyyMMddhhmmss.storage.txt”(其中“yyyyMMddhhmmss”表示日期时间)
将文件转换为“storage.txt”
最好是非破坏性地更新文件,所以写一个新文件,然后重命名旧文件,再重命名新文件是一种谨慎的方法。如果在文件I/O操作过程中出现问题,没有伤害,没有犯规。

相关问题