我在使用fgets()讀取用戶輸入時出現問題,當我嘗試讀取輸入並點擊輸入時會影響下一個輸入,它會自動讀取新線性字符和混亂的一切。這裏有些人告訴我使用strcspn()函數來擺脫新的行字符。但它仍然不適合我。爲了更具體地說年齡字段是有問題的字段,我將年齡字符數組設置爲4,因爲最大年齡是3位數字,我們需要爲空字符額外的空間。當我在age字段中使用fgets()時,我還讀取了4個字符,年齡最多3個地方,字符串終止的最後一個地方,但它不起作用,我無法弄清楚如何修復它。使用fgets()從鍵盤讀取時從前面的輸入中讀取換行符
struct Person {
char name[20];
char age[4];
};
int main(){
vector<Person> v;
for (unsigned int i = 0; i < 5; i++) {
Person p;
printf("Enter a name and age:\n");
printf("Name: ");
fgets(p.name, 20, stdin);
p.name[strcspn(p.name,"\n")] = '\0';
printf("Age: ");
fgets(p.age, 4, stdin);
p.age[strcspn(p.age, "\n")] = '\0';
v.push_back(p);
}
}
這不是C,它是c。使用C構造++(矢量...)。 –
@xing我是否需要更新fgets()和年齡數組容量,或者只是更新fgets()? – Keselme
'int age; cin >>年齡;'? – JazzSoft