Как создать текстовый файл с именем отсканированной строки? - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь подсчитать появление символа для строки.

У пользователя есть два варианта:

  • сначала, отобразить результат на экране
  • во-вторых, чтобы сохранить результат в файле, но имя файла будет строкой, введенной также пользователем

Моя настоящая проблема в том, что при сканировании имени файла он не работает. .

Часть моего кода, где count[] имеет целое число, представляет собой вхождение каждого символа. Когда я попытался отладить код, мне показалось, что шаг сканирования out[] строкового массива был пропущен, и он получил необычные символы, такие как ÿÿtþa.

    printf("Enter 1 if you want to output data on screen\nEnter 2 to output data to file : ");
    int input;
    scanf("%d", &input);
    if(input == 1)
    {
        fprintf(stdout,"%s:\n\"%s\"\n", "characters count in this string", s);
        fprintf( stdout, "%-20s%-4s\n", "character", "count");
        for(int j = 0; j < 26; j++)
        fprintf(  stdout, "%-20c%-4d\n", j+65, count[j]);
    }//end of if
    else if(input == 2)
    {
        FILE *Ptr;
        printf("enter file name : ");
        char out[30]= {'\0'};
        scanf("%29[^\n]", out);
        if( (Ptr = fopen(out,"w")) == NULL)
        printf("CAN NOT OPEN FILE\n");
        else
        {
            fprintf(Ptr,"%s:\n\"%s\"\n", "characters count in this string", s);
            fprintf( Ptr, "%-20s%-4s\n", "character", "count");
            for(int j = 0; j < 26; j++)
            fprintf(  Ptr, "%-20c%-4d\n", j+65, count[j]);
        }//end of else
        fclose(Ptr);
      }//end of else
}//end of main
...