我有兩個使用下面的fgets的場景。兩種情況都在同一個文件中,如下所示。fgets不提示用戶輸入。有什麼不同?
struct sth
{
char str[10];
int num;
};
void getIt(struct sth **M){
char *b;
(*M)=malloc(sizeof(struct sth));
printf("give me an integer:");
fgets(b,1,stdin); // output must be an address
(*M)->num = atoi(b);
printf("give me a string:");
fgets((*M)->str,10,stdin);
}
int main(int argc, char const *argv[])
{
struct sth *myThing;
getIt(&myThing);
printf("Heres the string %s\n", myThing->str);
printf("Heres the num \n", myThing->num);
return 0;
}
這裏是輸出。請注意,它不會提示用戶輸入整數,它只是打印「給我一個整數」,然後直接移動到下一個打印語句。它爲什麼這樣做?
give me an integer:give me a string:sdf
Heres the string sdf
Heres the num
這個小問題是一個更大的問題一個更大的問題,所以這僅僅是一個較大的一個縮影。
fscanf讀取無限數量的字符,這使得我試圖做的事情很危險。所以,我選擇了fgets。請記住,這個例子是一個更大的操作的一部分。 – Candic3