gpt4 book ai didi

更改文本文件大小写并在 C 中复制数据

转载 作者:行者123 更新时间:2023-11-30 19:40:58 24 4
gpt4 key购买 nike

我正在创建一个程序,该程序从一个文件复制文本文件数据,并根据选择将其大小写更改为小写或大写,但是当我执行该程序时,我收到以下结果,并且文本大小写未更改或复制。

    #include <stdio.h>
int main() {

FILE *fp = NULL;
FILE *fp2 = NULL;
char str[200];
char var;
int i;
char copy;



fp = fopen("file1.txt", "a");
fp2 = fopen("file2.txt", "w");

printf("Enter choice: ");
scanf(" %c", &var);

if (fp != NULL && var == 'L') {

while ( fgets(str, 200, fp) != NULL ) {

putchar(tolower(fp[i]));
i++;
}

puts(str);
}
else if (fp != NULL && var == 'U') {

while ( fgets(str, 200, fp) != NULL ) {

putchar(toupper(fp[i]));
i++;
}

puts(str);
}
else {

printf("ERROR: No proper choice was made \n");
}
while (1) {

copy = fgetc(fp);

if (copy == EOF) {

break;
}
else {

putc(copy , fp2);
}
}

return 0;

fclose(fp);
fclose(fp2);

}

我得到的输出是:

    Enter choice: U
▒▒

最佳答案

putchar(tolower(fp[i])); 应该生成编译器警告。确保编译器警告全部启用或考虑使用新的编译器。

更换 2 个位置,上部和下部。

while ( fgets(str, 200, fp) != NULL ) {
putchar(tolower(fp[i]));
i++;
}

// With to iterate over each character
while (fgets(str, sizeof str, fp) != NULL) {
for (i=0; str[i]; i++) {
putchar(tolower(str[i]));
}
}

更改为 int 以正确区分从 fgetc() 返回的所有字符和 EOF

使用“r”打开从文件开头读取

// fp = fopen("file1.txt", "a")
fp = fopen("file1.txt", "r");

关于更改文本文件大小写并在 C 中复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34139679/

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