Эта программа сравнивает две строки: одну, которая является хорошей, и другую, которая вводится пользователем (я сделал это с четырьмя строками, поэтому два из них являются вводом, а два других являются правильными ответами).
Я читал, что функция gets
не должна использоваться, и вместо этого лучше использовать fgets
. Итак, вот что я здесь сделал, но когда моя программа достигает второго printf
, он падает.Ошибка программы при печати
Исходный код, как показано ниже:
#include <stdio.h>
#include <string.h>
int main()
{
char clave_verdadera[5], usuario_verdadero[5];
strcpy(clave_verdadera, "hola\n");
strcpy(usuario_verdadero, "jose\n");
char *clave, *usuario;
printf("por favor escriba su nombre de usuario:");
fgets(usuario, 5, stdin);
printf("Por favor escriba su contraseña: ");
fgets(clave, 5, stdin);
int comparacion_clave;
comparacion_clave = strcmp(clave, clave_verdadera);
int comparacion_usuario;
comparacion_usuario = strcmp(usuario, usuario_verdadero);
comparacion_clave == 0 && comparacion_usuario == 0
? printf("¡Felicidades! has entrado \n"): printf("Nombre de usuario o contraseña incorrecta \n");
getchar();
return 0;
}
Вы должны скомпилировать все предупреждения & debug info ('gcc -Wall -Wextra -g'), то ** используйте отладчик ** (' gdb') –