在变量上使用fgetc(stdin)之后,如何将输入传递给strtol?
我有一个变量,用户在其中输入一个数字。该变量的类型为在变量上使用fgetc(stdin)之后,如何将输入传递给strtol?,c,strtol,C,Strtol,我有一个变量,用户在其中输入一个数字。该变量的类型为int,因为这是fgetc(stdin)和getchar()的返回值。在本例中,我使用的是fgetc(stdin)。用户输入数字后,我想用strtol()将其转换为整数,但是,由于strtol()的第一个参数是const char*,因此我收到一条关于整数到指针转换不兼容的警告。代码如下: int option; char *endptr; int8_t choice; printf("=======================
int
,因为这是fgetc(stdin)
和getchar()
的返回值。在本例中,我使用的是fgetc(stdin)
。用户输入数字后,我想用strtol()
将其转换为整数,但是,由于strtol()
的第一个参数是const char*
,因此我收到一条关于整数到指针转换不兼容的警告。代码如下:
int option;
char *endptr;
int8_t choice;
printf("=========================================Login or Create Account=========================================\n\n");
while(1) {
printf("Welcome to the Bank management program! Would you like to 1. Create Account or 2. Login?\n>>> ");
fflush(stdout);
option = fgetc(stdin);
choice = strtol(option, &endptr, 10);
有人知道如何解决这个问题吗?
strtol
用于将“字符串”转换为长的,而不是单个字符。您只需choice=option-“0”
即可获得该值。但实际上不需要转换,因为可以直接打开char值
switch (option)
{
case '1':
// ...
break;
case '2':
// ...
break;
}
如果您真的想调用strtol
,则必须生成一个字符串
char[2] str;
str[0] = option;
str[1] = 0; // null terminator
choice = strtol(str, &endptr, 10);
由于变量“option”已经是整数,因此没有理由再调用“strtol”
或者您可以使用get从stdin获取缓冲区,然后通过strtol将缓冲区转换为整数。Oh ok。谢谢我会去做的。但假设我确实想将其转换为int
,是否可能不得到任何警告?警告存在是因为它是错误的,并且您的代码无法工作。但是是的,请看我的编辑