将txt文件中的所有字符串转换为c中的小写
Converting all strings in a txt file to lowercase in c
我被指派将一个 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
的文档,你会发现它的 return 类型是 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);
}
我被指派将一个 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
的文档,你会发现它的 return 类型是 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);
}