簡體   English   中英

如何在C的結構成員中掃描帶有空格的字符串?

[英]How to scan a string with white spaces in structure members in C?

struct Demo{
   char a[50];
   char b[50];
   int a;
};
  • 任何人都可以提供此結構演示的代碼,其中a和b將包含具有不同單詞的字符串[空白]。

    我試過了

    • scanf("[^\\n]s",name.a); //where name is the object
    • fgets(name.a,50,stdin);

注意:我們也不能使用gets方法

因此,如果有其他方法,請提供給我。

一行用戶輸入讀入char a[50]; 其潛在的尾隨'\\n'修剪:

if (fgets(name.a, sizeof name.a, stdin)) {
  name.a[strcspn(name.a, "\n")] = '\0'; // trim \n
}

需要進行工作以解決占用過多的長輸入行並使用name.a[]的最后一個元素的問題,例如:

// Alternative
if (scanf("%49[^\n]", name.a) == 1) {
  // consume trailing input
  int ch;
  while ((ch = fgetc(stdin)) != '\n' && ch != EOF) {
    ;
  }
} else {  // Handle lines of only \n, end-of-file or input error
  name.a[0] = '\0';
}

scanf("%49[^\\n]%*c", name.a)方法在2種情況下存在問題:
1)輸入僅為"\\n"name.a未保存任何內容,而stdin仍保留'\\n'
2)輸入超過49個字符(除了'\\n' ), %*c會占用一個額外的字符,但長輸入行的其余部分仍保留在stdin
這兩個問題也可以使用其他代碼來解決。

暫無
暫無

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

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