чтение файла по одному символу за раз с пробелами - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь преобразовать дело из файла и записать в другой.Файл, который я пытаюсь преобразовать, содержит пробелы и несколько строк.Преобразованная форма записывается без пробелов и переносов строк.Кто-нибудь знает, как я могу изменить свой код, чтобы он содержал пробелы и разрывы строк из исходного файла?

#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;
}

1 Ответ

0 голосов
/ 20 февраля 2019

Общее решение для начинающих:

...
do
{
    singleline = fgetc(fp1);
    if (singleline == EOF)
      break;        // end of file => game over quit loop immediately

    // convert char if neessary
    if (islower(singleline))
    {
        singleline = toupper(singleline);
    }
    else if (isupper(singleline))
    {
        singleline = tolower(singleline);
    }

    // output the char
    fputc(singleline, fp2);
} while (1);
...

Существуют более короткие решения, но их труднее читать и понимать для начинающих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...