wie input-Datei und es verwenden, um zu zählen groß - /Kleinbuchstaben, zahlen und Satzzeichen?

Mein Ziel ist einfach. Bitten Sie einen Benutzer für eine einfache text-Datei mit groß - /Kleinbuchstaben, Ziffern und Satzzeichen. Dann nehmen Sie die Datei, öffnen Sie Sie, und Scannen Sie für jedes der oben genannten Elemente halten eine Anzahl von jeweils. Schließlich, Ausgabe insgesamt für jeden (also insgesamt Großbuchstaben enthalten, insgesamt Kleinbuchstaben, total Ziffern und insgesamt Satzzeichen).

Leider, meine Frage ist nicht so einfach. Ich bin wirklich irritiert, wie genau (d.h. auf das Konzept und die syntax für) den Weg C geht eine input-Datei in eine Funktion wie fgetc und prüft dann, es zu Inkrementieren Zähler. Mein Programm abstürzt und ich ein wenig Ideen, warum. Ich denke, meine erste Frage ist dann, warum es abgestürzt ist? Mein code ist unten;

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>


int main()
{
    char Character = 0;
    int words = 0;
    int upper_case = 0;
    int lower_case = 0;
    int punctuation = 0;
    int digits = 0;
    int entered_words = 0;
    char user_filename[100];
    char user_filecontent[100];



    printf("Enter the filename of the file containing text and/or digits:\n");
    printf("(hit the Enter key when done)\n");
    gets(user_filename);

    FILE *fp;
    fp = fopen (user_filename, "r");


    if (fp == NULL)
    {
        printf("\nError, Unable to open the file for reading\n");
    }


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


            while((Character=fgetc(fp)) != '\n');
            {

                if (isalnum (Character))
                {
                    if (!entered_words)
                    {
                        entered_words = 1;
                        words++;
                    }
                }


                else
                {
                    if (entered_words)
                    {
                        entered_words = 0;
                    }
                }


                if (isupper(Character))
                {
                    upper_case++;
                }


                else if (islower(Character))
                {
                    lower_case++;
                }


                else if (isdigit(Character))
                {
                    digits++;
                }


                else if (ispunct(Character))
                {
                    punctuation++;
                }

            }

    fclose(fp);
    }

    printf("Total number of words is %d.\n", words);
    printf("Total number of digits are %d.\n", digits);
    printf("Total number of uppercase letters is %d.\n", upper_case);
    printf("Total number of lowercase letters is %d.\n", lower_case);
    printf("Total number of punctuation characters is %d.\n", punctuation);

return 0;
}
InformationsquelleAutor user1593866 | 2012-08-12
Schreibe einen Kommentar