如何使用 scanf 获取整数和字符串输入?
How to get integer and string input using scanf?
我的C语言有问题
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char usrname[17] = "nsa-secret-agent";
char password[9] = "marshal41";
char usr[512], pass[512];
printf("username: ");
scanf("%[^\n]%*c", usr);
printf("password: ");
scanf("%[^\n]%*c", pass);
printf("%s\n", usr);
printf("%s\n", pass);
if (strcmp(usrname, usr) == 0 && strcmp(password, pass) == 0){
printf("You Have Successfully Logged In!\n");
}
else{
printf("username or password not found!\n");
exit(0);
}
return 0;
}
当我 运行 这段代码 运行 没有任何错误,但是当给出如下输入时:
username: nsa-secret-agent
password: marshal41
nsa-secret-agent
marshal41
username or password not found!
我提供了正确的凭据,但仍然显示错误
您的 usrname
和 password
数组相差一个:
char usrname[17] = "nsa-secret-agent";
char password[9] = "marshal41";
这些是零终止符的一个短字节,这使得稍后的比较失败。添加一个或只使用
char usrname[] = "nsa-secret-agent";
char password[] = "marshal41";
或者您甚至可以使用
char *usrname = "nsa-secret-agent";
char *password = "marshal41";
因为字符串没有被修改。
我的C语言有问题
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char usrname[17] = "nsa-secret-agent";
char password[9] = "marshal41";
char usr[512], pass[512];
printf("username: ");
scanf("%[^\n]%*c", usr);
printf("password: ");
scanf("%[^\n]%*c", pass);
printf("%s\n", usr);
printf("%s\n", pass);
if (strcmp(usrname, usr) == 0 && strcmp(password, pass) == 0){
printf("You Have Successfully Logged In!\n");
}
else{
printf("username or password not found!\n");
exit(0);
}
return 0;
}
当我 运行 这段代码 运行 没有任何错误,但是当给出如下输入时:
username: nsa-secret-agent
password: marshal41
nsa-secret-agent
marshal41
username or password not found!
我提供了正确的凭据,但仍然显示错误
您的 usrname
和 password
数组相差一个:
char usrname[17] = "nsa-secret-agent";
char password[9] = "marshal41";
这些是零终止符的一个短字节,这使得稍后的比较失败。添加一个或只使用
char usrname[] = "nsa-secret-agent";
char password[] = "marshal41";
或者您甚至可以使用
char *usrname = "nsa-secret-agent";
char *password = "marshal41";
因为字符串没有被修改。