You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11下fputc函数失效?C语言文件转大写复制程序排障

问题分析与修复

你的程序在Windows 11下运行后输出文件为空,核心是两个语法错误导致程序提前退出,且错误提示未正常显示:

  • 赋值操作误用作条件判断
    打开输出文件后的判断语句if(fpout=NULL)是致命错误:这里是把NULL赋值给fpout,而非判断文件指针是否为空。这会让程序直接进入错误分支执行exit(667),但因为错误提示的换行符写错,你没看到报错,误以为程序正常运行,最终输出文件仅被创建就终止,所以是空的。正确写法应为if(fpout == NULL)。

  • 错误的换行转义符
    错误提示字符串里的"write error/n"是错误的,换行转义符应该是\n,/n无法触发换行,导致错误信息无法正常显示在控制台,你也就没察觉到程序提前退出的问题。

修复后的完整代码:

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

int main(){
    FILE *fpin, *fpout; 
    char x;
    fpin=fopen("test.txt","r");
    if(fpin==NULL){
        fprintf(stderr,"read error\n");
        exit(666);
    }
    fpout=fopen("up.txt","w");
    if(fpout == NULL){
        fprintf(stderr,"write error\n");
        exit(667);
    }
    while((x=fgetc(fpin))!=EOF){
        fputc(toupper(x),fpout);
    }
    fclose(fpin);
    fclose(fpout);
    
    return 0;
}

额外注意:Windows下Dev-C++编译的程序,默认会在项目目录或可执行文件所在目录寻找test.txt,确保该文件存在且路径正确。

内容的提问来源于stack exchange,提问作者sartttt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:55:20