Pour comparer deux chaînes par une fonction strcmp()
, j'ai pris une chaîne d'entrée par fgets()
et cin
et une autre est donnée en fonction comme argument par défaut. Mais quand je les compare par strcmp()
sorties de funtion ne correspond pas.La sortie ne correspond pas à la fonction strcmp() c
char a[20];
int b;
cin>>a;
b=strcmp(a,"ab");
cout<<b;
où i prendre comme entrée a
ab
et la valeur de b
est 0, qui est tout à fait fine.But lorsque, pour la même entrée est prise par fgets()
strcmp()
puis sortie ne sont pas même que précédemment.
char a[20];
int b;
fgets(a,sizeof(a),stdin);
b=strcmp(a,"ab");
cout<<b;
où a
's valeur est ab
et b
' est la valeur de 1. Pourquoi? est-ce un problème de compilateur ou autre chose?
Ce n'est pas un problème de compilateur. Le problème est que vous n'avez pas lu les documents de plus près. [Les docs de la fonction fgets] (http://en.cppreference.com/w/c/io/fgets). Que pensez-vous que le deuxième paramètre fait? – PaulMcKenzie
'fgets' et' cin >> a' ne donnent pas la même chaîne. Veuillez lire la documentation de _both_ pour mieux comprendre ce qu'ils font. –
@PaulMcKenzie comme str contiendra ce caractère de nouvelle ligne de sorte qu'il donne la valeur 1. est-ce exact? –