簡體   English   中英

使用Scanf的矢量輸入(C語言)

[英]Vector Input Using Scanf (C language)

stackoverflow的第一次用戶,但長時間訪問者。 我認為開始更多參與是明智的。 但首先,我有一個小問題:)

基本上我要做的是接收3個數字(可以是正數,負數或十進制數),每個數字用空格(XYZ)分隔,僅使用scanf並放入數組/結構(忽略空格),然后返回如果用戶未明確輸入數字或以不正確的格式輸入錯誤消息。 這可能與scanf有關嗎? 有什么選擇?

我已經搜索了所有不同的問題,但我找不到一個我能理解的答案(第一個帶C的計時器)。 一個鏈接,解釋或一些示例代碼將非常感謝:)

聽起來好像你想要三個數字在一條線上; 將它們分布在多條線上是不可接受的。 如果線上有第四個數字,你沒有說明會發生什么。

使用plain scanf() ,即使不是不可能,也很難控制它。 使用fgets()sscanf()是可行的:

char line[4096];
while (fgets(line, sizeof(line), stdin) != 0)
{
    double v1, v2, v3;
    if (sscanf(line, "%g %g %g", &v1, &v2, &v3) != 3)
        ...format error...
    ...save v1, v2, v3 into your structure or array...
}

或者,您可以找到轉換完成的位置,並檢查三個數字后線上沒有碎片。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM