我正在爲C編程課程的最終項目工作。該項目是創建一個數據庫來存儲藥物信息。我已經完成了所有的要素,現在要精細調整一切。使用scanf的問題,允許用戶跳過問題
在用戶可以更改藥品信息的功能中,項目中有一個要求。在要求中,用戶應該能夠通過按回車鍵跳過一個字段。例如,用戶可以改變藥物的生產者和數量。如果用戶不想更改生產者,他們會按Enter鍵並轉到數量上。
我環顧了網絡,並能夠讓用戶跳過爲生產者輸入字符串。但是,我無法使用整數工作。
這是我使用,使得用戶可以跳過輸入字符串:
scanf("%30[^\n]", fentry[found].producer);
爲了清楚起見,fentry.producer是具有30個字符的字符串,發現是整型變量。
我試過做類似的整數輸入(編輯:通過整數輸入,我的意思是輸入數量,而不是'發現'變量)。它可以讓你跳過輸入內容,但是如果你輸入了一些內容,它會存儲一個隨機值。
任何人都知道如何去做這件事?
感謝您的幫助,我解決了原來的問題。 我的編程課程相對於我偶然發現的非常基礎,所以我從來沒有使用過fgets()或sscanf()。是否有辦法接受空間和其他一切? – confusedstudent
我不確定你的意思是「允許」。 'fgets()'函數返回用戶輸入的內容,空格和所有內容,直到用戶按Enter鍵的換行符。你可以直接使用這個字符串(也就是說,不需要使用'sscanf()'從字符串中獲取一個字符串),或者如果你想獲得多個數據項,你可以在字符串內查找(例如,一行中有兩個數字)。 –
聽起來好像你正在使用'sscanf()'從字符串中獲取一個字符串。在'sscanf()'中使用'%s'格式說明符時,它會在遇到第一個空格時停止掃描。這就是爲什麼你只能得到一個字。在這種情況下的答案是根本不使用'sccanf()',因爲'fgets()'本身就給你一個完整的字符串。你可能需要做的就是除去換行符('\ n'')。 –