hilfe bei umlauten - kurz vor dem durchbruch



  • kann sich wer von euch bitte meinen source code ansehen. steh kurz vor dem durchbruch bei dem beispiel. hab nur ein problem mit den umlauten. die haben bei mir einen ascii-wert von -123 oder so. kann mir da jemand von euch bei der fehlerbehebung helfen.

    lg cora

    #include<stdio.h>
    #include<conio.h>

    //****************************************************************
    //*************Initialisierung der Prototypen*********************
    //****************************************************************

    void anzahlwoerter(char string, int *ptrsum, int *ptranzahlw, double ptrerg);
    int auswertungbuchstaben(int ascii[]);
    int correct(char string);
    //
    ***************************************************************
    //*******************Hauptprogramm********************************
    //****************************************************************

    int main(void) {

    //***************************************
    int *ptranzahlw = NULL, anzahlw = 0;
    char string;

    ptranzahlw = &anzahlw;
    //***************************************
    //***************************************
    int *ptrsum = NULL, sum = 0;
    double *ptrerg = NULL, erg = 0;

    ptrsum = ∑
    ptrerg = &erg;
    //***************************************
    int ascii[255] = {0};
    //***************************************
    //***************************************
    int i;
    //***************************************

    //****************************************************************
    do
    {

    string=getc(stdin);

    ascii[string]++;

    anzahlwoerter(string, ptrsum, ptranzahlw, ptrerg);

    }while(string != EOF);
    //****************************************************************

    auswertungbuchstaben(ascii);

    //****************************************************************

    printf("Anzahl der Wörter : %d", anzahlw);

    printf("\nDie mittlere Wortlaenge ist %.2lf", erg/anzahlw);

    printf("\n\nAbsolute und relative Häufigkeit aller Buchstaben :");
    printf("\n\nBuchstabe Absolute Haufigkeit Relative Haeufigkeit ");

    for(i = 97; i < 123; i++)
    printf("\n %c, %c %d %-.2lf", i, i-32, ascii[i], ascii[i]/erg*100);

    //****** ** ** *******
    //*** * ** ** ** **
    //*** * ** ** **
    //******* ** ** **
    //*** * ** ** ** ****
    //*** * ** ** ** **
    //******* ****** *******

    printf("\n %c, %c %d %.2lf", 129, 154, ascii[129], ascii[129]/erg);
    printf("\n %c, %c %d %.2lf", 148, 153, ascii[153], ascii[153]/erg);
    printf("\n %c, %c %d %.2lf", 132, 142, ascii[142], ascii[142]/erg);

    //****************************************************************
    //****************************************************************
    //****************************************************************
    //****************************************************************
    return 0;

    }

    //**************************************
    void anzahlwoerter(char string, int *ptrsum, int *ptranzahlw, double *ptrerg){

    if(correct(string))
    {
    (*ptrsum)++;
    }
    else
    {
    *ptrerg += *ptrsum;

    if(*ptrsum > 0)
    (*ptranzahlw)++;

    ptrsum = 0;
    }
    }
    //
    *************************************

    //**************************************
    int auswertungbuchstaben(int ascii[]){

    int i, a;

    for(i = 97;i < 123; i++)
    {
    a = ascii[i-32];
    ascii[i] += a;
    }

    a = ascii[154];
    ascii[129] += a;

    a = ascii[148];
    ascii[153] += a;

    a = ascii[132];
    ascii[142] += a;

    return ascii[255];
    }
    //**************************************

    //**************************************
    int correct(char string){

    if( (string>='a' && string<='z') || (string>='A' && string<='Z') || (string=='Ä') || (string=='ä') || (string=='Ö') || (string=='ö') || (string=='Ü') || (string=='ü'))

    return 1;

    else

    return 0;

    }
    //**************************************



  • Der Datentyp 'char' hat in C üblicherweise den Wertebereich -128 bis +127. Dabei belegen die Sonderzeichen den negativen Wertebereich.

    Der Datentyp 'unsigned char' dagegen umfaßt die Werte von 0 bis 256. Um einen 'char' in einen 'unsigned char' zu überführen, einfach ein

    (unsigned char)
    

    vor den Zeichenwert setzen.



  • char ist signed ODER unsigned - das ist implementation defined

    guck mal in die konsolen FAQ


Anmelden zum Antworten