簡體   English   中英

如何使用 Scanf 從標准輸入中僅提取字符串?

[英]How to extract string-only from stdin using Scanf?

我是 C 的初學者並嘗試從標准輸入中提取字符。

  • 輸入=“C0h1r2i3s4”
  • 預期結果=“克里斯”

我嘗試了兩種方法來實現這一點:

  1. 使用 scanf 將輸入存儲在一個變量中-> 一次遍歷輸入一個字符 -> 如果該字符不是 ASCII 表中的數字,則將該字符存儲在一個變量中

  2. 使用 fgets 獲取輸入並存儲在一個變量中-> 一次遍歷輸入一個字符 -> 如果該字符不是 ASCII 表中的數字,則將字符存儲在一個變量中

我想知道是否可以使用 scanf/fgets 僅從標准輸入獲取字符? 這樣我就不必遍歷每個字符。

我嘗試在下面使用 scanset ,但似乎 scanf 總是在字符級別進行篩選,並在下一個字符不符合指定格式時停止。

無論如何,我想知道是否有更強大的使用scanset & scanf。


scanf() 的代碼

#include <stdio.h>
#include <stdlib.h>
    
void main()
{
char str[50];
//intput = C0h1r2i3s4
scanf("%s", &str); // str = "C0h1r2i3s4"
        
//intput = C0h1r2i3s4
scanf("%*c%*d%s", &str); // str = "h1r2i3s4" -> C & 0 is ignored
        
//intput = C0h1r2i3s4
scanf("%[A-Z,a-z]%*d%s", &str); // str = "C" -> are they a valid format identifier? "%[A-Z,a-z]%*d%s"
} 

只是想關閉這個問題,以防其他人正在尋找類似的問題

在 C 中,沒有簡單的方法可以直接從標准輸入中提取某些字符。

  • 首先,我們需要從 stadin 讀取完整的輸入
  • 然后,我們遍歷輸入以決定關注哪些字符

謝謝你,忙碌的蜜蜂,你的評論在今年早些時候挽救了我的生命。 由於在 GitHub 上沒有足夠的聲譽,我無法添加評論,我剛剛意識到我可以回復自己的帖子。

暫無
暫無

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

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