C语言编程题已知D盘根目录 有一名为data1.txt的文件,其内容为:包括空格、回车和(见下)

已知D盘根目录 有一名为data1.txt的文件,其内容为:包括空格、回车和大/小写英文字母的文件。请编写完整的C代码程序,去除该文件的所有回车,并将大写英文字母都改写为对应的小写字母,最终,将换好的文件保存在当前目录下一个名为data2.txt的文件中。

#include <fstream>
using namespace std;

int main()
{
    ifstream fin("D:\\data1.txt");
    ofstream fout("D:\\data2.txt");
    char c;
    while (fin >> c)
    {
        if (c == '\n')
            continue;
        if (c >= 'A' && c <= 'Z')
            c += 'a' - 'A';   
        fout << c;
    }
    
    return 0;
}

追问

看不懂,我们学的头文件没有#include,可以解释一下吗?

追答#include<stdio.h>

int main()
{
    FILE *fin, *fout;
    fin = fopen("D:\\data1.txt", "r");
    fout = fopen("D:\\data2.txt", "w");
    char c;
    
    // 重复读入字符,直到到达文件尾
    while ((c = fgetc(fin)) != EOF)
    {
        // 如果是回车,不输出直接跳过
        if (c == '\n')
            continue;
        // 如果是大写字母,转换成小写
        if (c >= 'A' && c <= 'Z')
            c += 'a' - 'A';
        // 输出
        fputc(c, fout);
    }
    
    fclose(fin);
    fclose(fout);
    
    return 0;
}

抱歉之前是C++版本的。这个是等价的C版本的。

追问

谢谢了,这次懂了,不过,c=='\n'这不是换行吗,不是'\r'才是表示回车吗?刚运行了,程序说“char c;”语法错误,又说c没有定义??还有为什么要return 0,呀?

追答

'\n'是下一行,'\r'是回到当前行的起始,不知道你这里说的“回车”具体是哪一种?可能是我理解有所偏差。

char c;语法错误我在自己这里用Visual Studio 2012也出现了...理解不能,不过你把char c;这一句放到FILE *fin, *fout;之前就行了。无法理解这个诡异的错误=_=||

追问

: )嗯嗯,谢谢!

追答

如果满意还请采纳 : )

温馨提示:答案为网友推荐,仅供参考
相似回答