C: файл существует, но не открывается. Считать буквы? - PullRequest
1 голос
/ 19 января 2020

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

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char ch, file_name[25];
    FILE *fp;

    //Text aufrufen
    printf("Welche Datei soll aufgerufenru werden?\n");
    gets(file_name);

    fp = fopen(file_name, "r"); // read mode

    //Existenztest
    if (fp == NULL)
    {
        perror("Error while opening the file.\n");
        exit(EXIT_FAILURE);
    }

    //Tatsächliche Ausgabe
    printf("The contents of %s file are:\n", file_name);

    while((ch = fgetc(fp)) != EOF)
        printf("%c", ch);

    fclose(fp);
    return 0;
}

И: Как вы можете считать, например, каждую букву? (Внешний вид каждой буквы)

1 Ответ

1 голос
/ 19 января 2020

Я думаю, что ваше имя файла содержит пробел, который не читается gets во время выполнения

Замените gets(file_name); на scanf("%[^\n]", file_name);

И: Как вы можете считать, например: каждую букву?

Вы просто должны объявить переменную count и добавить некоторый дополнительный код в ваше время l oop:

unsigned count = 0;

while((ch = fgetc(fp)) != EOF)

{

    printf("%c", ch);
    if (isalpha(ch)) ++count; // isalpha can be found in ctype.h

}
...