gpt4 book ai didi

c - fprintf 在与批处理文件重定向一起使用时打印奇怪的字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:44 25 4
gpt4 key购买 nike

我有一个批处理文件如下

wmic cpu get CurrentClockSpeed > file.txt
program

程序是下面命令的可执行

gcc -o program initial_scan.c -lpsapi

下面是initial_scan.c文件

#include <stdio.h>
#include <windows.h>
#include <psapi.h>

#define DIV 1048576
#define WIDTH 7

int main(){


MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx (&statex);

PERFORMANCE_INFORMATION statex2;
statex2.cb=sizeof(statex2);
GetPerformanceInfo(&statex2,statex2.cb);


FILE *f=fopen("file.txt","a");
if(f==NULL){
printf("error opening the file");
exit(1);
}


fprintf(f,"There is %*ld percent of memory in use.\n",WIDTH, statex.dwMemoryLoad);
fprintf(f,"There are %*I64d total MB of physical memory.\n",WIDTH, statex.ullTotalPhys/DIV);
fprintf(f,"There are %*I64d free MB of physical memory.\n",WIDTH, statex.ullAvailPhys/DIV);

fprintf(f,"There is %*d processes currently in the system. \n",WIDTH,statex2.ProcessCount);
fprintf(f,"There is %*d threads currently in the system. \n",WIDTH,statex2.ThreadCount);

return 0;


}

当我运行批处理文件时,输出如下

CurrentClockSpeed  
3101
桔牥⁥獩†††㈠‵数捲湥⁴景洠浥牯⁹湩甠敳മ吊敨敲愠敲††〸㈷琠瑯污䴠⁂景瀠票楳慣敭潭祲മ吊敨敲愠敲††〶〲映敲⁥䴠⁂景瀠票楳慣敭潭祲മ吊敨敲椠⁳††〱‱牰捯獥敳⁳畣牲湥汴⁹湩琠敨猠獹整⹭ഠ吊敨敲椠⁳†ㄠ㘳″桴敲摡⁳畣牲湥汴⁹湩琠敨猠獹整⹭ഠ

当我在没有 wmic 命令的情况下编译并运行 initial_scan.c 文件时,我得到了我期望从 initial_scan.c 文件获得的正确输出。批处理文件中的问题是什么?

最佳答案

您正在使用 ANSI 编码打开/写入文件,但 wmic 输出 UTF-16,这是您需要采取的修复措施:

将此添加到您的文件开头:

FILE *f = fopen("file.txt", "a, ccs=UTF-16LE");

然后像这样替换你的fprintf:

fwprintf(f,L"...\n", ...);

关于c - fprintf 在与批处理文件重定向一起使用时打印奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20987184/

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