所以基本上在下面的程序中我尝试将文本的大写字母转换为小写字母,将小写字母转换为大写字母并将结果打印在文件中......但我唯一得到的是运行程序后是一系列数字...我试图把第二个参数放到fprintf函数“%s”但我没有得到更好的结果......
#include <stdio.h>
#include <ctype.h>
int main( )
{
char c;
int charToLowerCase = 0;
int charToUpperCase = 0;
int countCharacters = 0;
FILE *in_file;
FILE *out_file;
in_file = fopen("input.txt", "r");
out_file = fopen("output.txt", "w");
c = fgetc(in_file);
while (c != EOF)
{
if (c >= 'A' && c <= 'Z')
{
fprintf(out_file, "%d", tolower(c));
charToLowerCase++;
}
else if (c >= 'a' && c <= 'z')
{
fprintf(out_file, "%d", toupper(c));
charToUpperCase++;
}
else
fprintf(out_file, "%d", c);
c = fgetc(in_file);
countCharacters++;
}
fclose(in_file);
fclose(out_file);
return 0;
}
答案 0 :(得分:4)
toupper
和int
返回char
。 (这是他们可以处理EOF和其他奇怪的事情)。
你几乎安全地转换为int
(严格来说你应该检查返回的char
的大小)并使用适当的格式化程序来表示%c
1}},是if (c >= 'A' && c <= 'Z')
。
另外,请注意,C标准允许编码方案,其中大小写字母在连续的块中不是必然。见EBCDIC。严格来说{{1}}不是符合C标准的测试方式,如果信件是大写的话。
答案 1 :(得分:3)
在%c
语句中使用fprintf
。 %d
用于整数。