【发布时间】:2019-07-14 06:22:45
【问题描述】:
我正在尝试将案例从一个文件转换并写入另一个。我要转换的文件有空格和几行。转换后的形式没有空格,也没有换行符。有谁知道我可以如何更改我的代码,使其包含原始文件中的空格和换行符?
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main(void)
{
FILE *fp1, *fp2;
fp1 = fopen("exercise2.txt", "r");
fp2 = fopen("exercise2_converted.txt", "w");
int singleline;
if (fp1 == NULL)
{
printf("Error opening fp1!\n");
return 0;
}
if (fp2 == NULL)
{
printf("Error opening fp2!\n");
fclose(fp1);
return 0;
}
do
{
singleline = fgetc(fp1);
if (islower(singleline))
{
singleline = toupper(singleline);
fputc(singleline, fp2);
}
else if (isupper(singleline))
{
singleline = tolower(singleline);
fputc(singleline, fp2);
}
} while (singleline != EOF);
fclose(fp1);
fclose(fp2);
return 0;
}
【问题讨论】:
-
您需要考虑字符不是字母的情况(提示:使用
isalpha)。其他提示:您可以通过在代码中添加 2 行来解决您的问题(总共约 30 个字符) -
其实还有一个比我在第一条评论中建议的更简单的解决方案:移动一行并删除另一行。
-
@Jabberwocky 谢谢!现在做到了,但不知从何而来将“ÿ”放在最后。知道为什么吗?
-
ÿ是因为您输出了 EOF。应该很难弄清楚该怎么做。 -
@Jabberwocky 你到底是什么意思?我该如何阻止呢?
标签: c file line-breaks spaces fgetc