當我運行這段代碼:與fgets不存儲所提供的輸入在目標變量
#include<stdio.h>
#include<stdlib.h>
int main()
{
char name , age , gender , male;
printf("Please enter your name \n");
fgets(name, 20 ,stdin);
printf("Please enter your age \n");
fgets(age , 2 , stdin);
printf("Please enter your gender \n");
fgets(gender , 7 , stdin);
atoi(age);
{
if (age < 50 && gender == male)
printf(" You're fit to play\n Welcome player ,%s \n",name);
else printf("Sorry , %s. You're not fit to play", name);
}
return 0;
}
我得到這樣的輸出:
please enter your name
please enter your age
please enter your gender
you're fit to play
welcome player, (null)
而且這些都是警告我從編譯器得到我的codeblocks:
||=== Build: Release in justexploring1 (compiler: GNU GCC Compiler) ===|
D:\Project\C language\justexploring1\main.c||In function `main':|
D:\Project\C language\justexploring1\main.c|8|warning: passing arg 1 of `fgets' makes pointer from integer without a cast|
D:\Project\C language\justexploring1\main.c|10|warning: passing arg 1 of `fgets' makes pointer from integer without a cast|
D:\Project\C language\justexploring1\main.c|12|warning: passing arg 1 of `fgets' makes pointer from integer without a cast|
D:\Project\C language\justexploring1\main.c|13|warning: passing arg 1 of `atoi' makes pointer from integer without a cast|
D:\Project\C language\justexploring1\main.c|16|warning: format argument is not a pointer (arg 2)|
D:\Project\C language\justexploring1\main.c|17|warning: format argument is not a pointer (arg 2)|
D:\Project\C language\justexploring1\main.c|6|warning: 'name' might be used uninitialized in this function|
D:\Project\C language\justexploring1\main.c|6|warning: 'age' might be used uninitialized in this function|
D:\Project\C language\justexploring1\main.c|6|warning: 'gender' might be used uninitialized in this function|
D:\Project\C language\justexploring1\main.c|6|warning: 'male' might be used uninitialized in this function|
||=== Build finished: 0 error(s), 10 warning(s) (0 minute(s), 0 second(s)) ===|
它完全忽略了fgets
,並沒有提示任何輸入。 總是對待如果陳述是真實的。 並始終使用(空)name
。
你能告訴我我的代碼有什麼問題嗎? 我曾被告知使用fgets
而不是scanf
和gets
。 值得一提的是scanf
也給了我類似的問題。
幫你一個忙:**打開所有的編譯器警告並留意它們**。 – pmg
我剛剛給這個問題加了編譯警告。其中有很多。 –
strcmp?我不知道這個功能。你能告訴我它是如何使用的嗎? –