[C]Abfrage mit strcmp funktioniert nicht?

papsti7

Lt. Junior Grade
Registriert
Feb. 2014
Beiträge
304
Hallo ich möchte einen String vergleichen mit strcmp , aber irgendwie funktioniert es nicht. Habe es auch schon mit tolower() probiert und dann die abfrage nach "julia" alleine, aber hat auch nicht zum Erfolg geführt.
Code:
#include<stdio.h>
#include<string.h>


int main()

{   int result1,result2,result3;
    char name[20];

    printf("Geben Sie Ihren Namen ein:");
    fgets(name,20,stdin);
   /*Test für die Ein und Ausgabe. */
printf("\n%s.\n",name);
/*
if(name[strlen(name)]=='\n')
    name[strlen(name)]='\0';*/

result1=strcmp(name,"julia");
result2=strcmp(name,"Julia");
result3=strcmp(name,"JULIA");


    if(result1==0||result2==0||result3==0)
    {
        printf("Julia Dich kenne ich!");
    }
    else
        {printf("Hallo %s leider kenne ich Sie nicht!",name);}


return 0;}
 
Nimm 'stricmp' das ist Case-insensitive.

und fgets fügt \n newline an wie du bemerkt hast, deswegen

if(name[strlen(name)-1]=='\n')
name[strlen(name)-1]='\0';

index ist 0 basiert, deswegen -1
 
ok danke nun funktioniert es, also brauche ich immer diese if abfrage wenn ich einen string vergleichen will?
habe immer mit scanf gearbeitet und habe deswegen nicht an die neue zeile gedacht.
Ergänzung ()

und wenn ich stricmp verwende kann ich mir eigentlich die Zeilen 19 und 20 sparen oder?
 
papsti7 schrieb:
ok danke nun funktioniert es, also brauche ich immer diese if abfrage wenn ich einen string vergleichen will?
habe immer mit scanf gearbeitet und habe deswegen nicht an die neue zeile gedacht.
Ergänzung ()

und wenn ich stricmp verwende kann ich mir eigentlich die Zeilen 19 und 20 sparen oder?

Ja '\n' mit anhängen ist eine Spezialität von fgets. Moderner wären C++ streams.

und ja, zeilen 19 und 20 sind mit stricmp unnötig.
 
Zurück
Oben