【发布时间】:2015-07-03 03:51:22
【问题描述】:
这个程序比较两个字符串:一个是好的字符串,另一个是用户输入的(我用四个字符串做了这个,所以其中两个是输入,另外两个是正确的答案)。
我读到不应该使用函数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;
}
【问题讨论】:
-
您应该使用所有警告和调试信息 (
gcc -Wall -Wextra -g) 进行编译,然后使用调试器 (gdb)