問題是當它要求用戶輸入band的名稱時。程序繞過第一個fgets,但執行printf而不是fgets。我試圖解決這個問題,但如果再次出現同樣的問題。繞過第一個fgets。我也爲你提供一張圖片。程序跳過第一個fgets
#include <stdio.h>
#include <stdlib.h>
struct cd
{
char band[100];
};
struct cd *music;
int main()
{
int n,i;
printf("Give how many albums you want: ");
scanf("%d",&n);
struct cd *music = malloc(sizeof(struct cd)*n);
for(i=0;i<n;i++)
{
printf("\nEnter Band: ");
fgets(music->band,sizeof(music->band),stdin);
music++;
}
for(i=n-1;i>=0;i--)
music--;
for(i=0;i<n;i++)
{
printf("\nBand: %s",music->band);
music++;
}
printf("\n\n");
return 0;
}
這是由於'scanf'('scanf'讀取數字,離開換行符,換行符被'fgets'拾取)之後排隊的'\ n'。 – user2802841
感謝您向我展示問題出在哪裏。 – valkon
不要將'scanf()'與'fgets()'混合使用。最好使用'fgets()/ sscanf()'組合。 – chux