gpt4 book ai didi

在c中将txt文件中的所有字符串转换为小写

转载 作者:行者123 更新时间:2023-11-30 20:23:42 25 4
gpt4 key购买 nike

我被分配将 txt 文件中的所有字符串转换为小写,然后将其输出到新的 txt 文件中,但我似乎无法在任何地方找到如何执行此操作。任何帮助将非常感激!谢谢,这是我到目前为止所拥有的,但最后有 y,所以我在想是否有更好的方法来做到这一点,或者我是否可以删除上面有两个点的 y..

#include<stdio.h>
#include<process.h>

void main() {
FILE *fp1, *fp2;
char a;

fp1 = fopen("test.txt", "r");
if (fp1 == NULL)
{
puts("cannot open this file");
exit(1);
}

fp2 = fopen("test1.txt", "w");
if (fp2 == NULL) {
puts("Not able to open this file");
fclose(fp1);
exit(1);
}

do
{
a = fgetc(fp1);
a = tolower(a);
fputc(a, fp2);
} while (a != EOF);

fcloseall();
getch();
}

最佳答案

当您从文件读取输入时,应始终检查输入是否有效,然后再继续使用它。在您的情况下,您会在该行中获得输入。

a = fgetc(fp1);

在继续使用之前,您需要检查a是否是有效的输入。

if ( a != EOF )
{
a = tolower(a);
fputc(a, fp2);
}

还有一件事要更新。不要使用

char c;

使用

int c; 

相反。

char 类型可以是您平台上的有符号类型或无符号类型。如果它是无符号类型,则它永远不会有负值。因此,它永远不会等于 EOF,通常是 -1,这将导致无限循环。

如果您查找fgetc的文档,您会发现它的返回类型是int,而不是char

您的程序可以更新为:

void main() {
FILE *fp1, *fp2;
int a;

// Add rest of your code
// ...

do
{
a = fgetc(fp1);
if ( a != EOF )
{
a = tolower(a);
fputc(a, fp2);
}
} while (a != EOF);

// Add rest of your code
// ...
}

do-while 循环可以简化为:

   while ( (a = fgetc(fp1)) != EOF )
{
a = tolower(a);
fputc(a, fp2);
}

关于在c中将txt文件中的所有字符串转换为小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35609664/

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