本文附帶的代碼是較大程序的一部分,但我在輸入結構變量「標題」和「作者」時遇到問題。 該程序似乎循環它並轉到下一行。另外,雖然在字符串說明符中的's'前面使用[^ \ n],但它執行相同的操作,但我讀取它時使用scanf將字符串作爲輸入。閱讀一些帖子,但無法找出問題。 剛開始C,任何幫助將不勝感激!使用scanf進行結構輸入
struct books{
char title[30];
char author[30];
char subject[20];
int quantity;
int book_id;
char *category;
int count;
float price;
};
struct books book;
book.book_id=id;
printf("\n\n\t\tBook Name:\n\t\t");
scanf(" %s",book.title);
printf("\n\n\t\tAuthor:\n\t\t");
scanf(" %[^\n]s",book.author);
printf("\n\n\t\tQuantity:\n\t\t");
scanf("%d",&book.quantity);
printf("\n\n\t\tPrice:\n\t\t");
scanf("%f",&book.price);
它可能是%s之前的空格 – Luci
您的格式說明符是否確實包含'[^ \ n]'而不是'[^ \ n]'?你不希望那裏有額外的空間。 '[^ \ n]'特別指定'\ n',而不是任何空格作爲字符串分隔符。如果您嘗試過,那麼這是您應該發佈的代碼。當輸入不包含空格或者是一個問題時它工作嗎? – Clifford
[mcve],請!順便說一句,在'[^ \ n]'之後''s是錯誤的,應該刪除。這雖然沒有任何效果,但完全是多餘的。 –