添加以下头文件和代码
#include <fcntl.h>
// 设置输入文件为二进制模式
_setmode(_fileno(inFile), _O_BINARY);
// 设置输出文件为二进制模式
_setmode(_fileno(outFile), _O_BINARY);
问题解决!!!
本文使用的全部代码如下:
#include <stdio.h>
#include <ctype.h>
#include <fcntl.h> // Include for _O_BINARY
int upperToLower(void) {
FILE *inFile = NULL, *outFile = NULL;
int ch;
errno_t err;
// 打开输入文件
err = fopen_s(&inFile, “test.txt”, “r”);
if (err != 0) {
printf(“Error opening input file. Error code: %d\n”, err);
return -1;
}
// 设置输入文件为二进制模式
_setmode(_fileno(inFile), _O_BINARY);
// 打开输出文件
err = fopen_s(&outFile, “test2.txt”, “w”);
if (err != 0) {
printf(“Error opening output file. Error code: %d\n”, err);
if (inFile != NULL) {
fclose(inFile);
}
return -1;
}
// 设置输出文件为二进制模式
_setmode(_fileno(outFile), _O_BINARY);
// 读取并转换字符
while ((ch = fgetc(inFile)) != EOF) {
// 将大写字母转换为小写
if (isupper((unsigned char)ch)) {
ch = tolower((unsigned char)ch);
}
// 写入转换后的字符到输出文件
if (fputc(ch, outFile) == EOF) {
perror(“Error writing to output file”);
if (inFile != NULL) {
fclose(inFile);
}
if (outFile != NULL) {
fclose(outFile);
}
return -1;
}
}
// 关闭文件
if (inFile != NULL) {
fclose(inFile);
}
if (outFile != NULL) {
fclose(outFile);
}
return 0;
}
int main() {
int result = upperToLower();
if (result == 0) {
printf(“Conversion completed successfully.\n”);
} else {
printf(“An error occurred during conversion.\n”);
}
return 0;
}