2301_79006680 2023-08-08 00:19 采纳率: 0%
浏览 0

修改文件中的%d的会出错,如何解决?错误代码-1073741819

错误窗口。修改文件中的%d类型的会直接结束运行,改%s类型的能正常运行

img

代码

img

img

文件位置

img

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-08 04:05
    关注

    【以下回答由 GPT 生成】

    根据你提供的信息,错误代码-1073741819表示程序发生了堆栈溢出的错误。从截图也可以看到,你使用了递归函数replaceFileContent。这可能是导致堆栈溢出的原因之一。

    为了解决这个问题,我建议你使用迭代而不是递归的方式进行文件内容的替换。以下是修改后的代码示例:

    #include <stdio.h>
    #include <stdlib.h>
    
    void replaceFileContent(const char *filename) {
        FILE *file = fopen(filename, "r+");
        if (file == NULL) {
            printf("无法打开文件\n");
            return;
        }
    
        char *line = NULL;
        size_t len = 0;
        ssize_t read;
    
        while ((read = getline(&line, &len, file)) != -1) {
            char *ptr = line;
            char *newLine = (char *)malloc(len * sizeof(char));
            char *newPtr = newLine;
            int isReplaced = 0;
    
            while (*ptr != '\0') {
                if (*ptr == '%' && *(ptr + 1) == 'd') {
                    int value = 100;  // 这里可以根据实际情况替换为你想要的数值
                    sprintf(newPtr, "%d", value);
                    newPtr += strlen(newPtr);
                    ptr += 2;
                    isReplaced = 1;
                } else {
                    *newPtr++ = *ptr++;
                }
            }
    
            if (isReplaced) {
                *newPtr = '\0';
                fseek(file, -read, SEEK_CUR);
                fputs(newLine, file);
            }
    
            free(newLine);
        }
    
        free(line);
        fclose(file);
    }
    
    int main() {
        const char *filename = "path_to_your_file.txt";
        replaceFileContent(filename);
        return 0;
    }
    

    这段代码使用了getline函数逐行读取文件内容,并且使用fseekfputs函数进行替换后的写操作。请将代码中的path_to_your_file.txt替换为你的文件路径。

    希望对你有帮助!如果还有其他问题,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月8日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画