簡體   English   中英

將字母輸入與c中的整數輸入區分開

[英]Distinguish a letter input from an integer input in c

可以提供兩種輸入:

50
b 2 40

我必須區分這兩種情況,然后采取相應的措施。 這是我嘗試過的:

char input[100];
fgets(input, 100, stdin);
printf("%s", input);
int count = 0;
char a[3][100];
int j=0, i=0;
while(true){

  a[count][j] = input[i];
  j++; i++;

  if(input[i] == '\n'){
    break;
  }
  if(input[i] == ' '){
    count++;
    j = 0;
    i++;
  }
}
printf("%d\n", count);
printf("%s\n", a[0]);
printf("%s\n", a[1]);
printf("%s\n", a[2]);

例如,輸入:

b 6767 9090

輸出:

b 6767 9090
b 6767 9090
2
b����
67670
9090

有人可以幫我嗎? 以前建議我使用fgets。 因為我是C語言的初學者,所以我很難確定如何實現此目標。

遇到空格時,您應該設置'\\0'或null終止符,或者您可以預先將數組的所有元素設置為0或null,如下所示-

char a[3][100] = {0};

另外,如果用戶輸入的字符串超過三個單詞(即count> 2),則該程序將崩潰,因為loop while(true)會一直嘗試直到命中\\ n字符。

我發現最好的方法是:

char inp[25];
scanf("%s", inp);
if(inp[0] == 'b'){
  int r, v;
  scanf("%d %d", &r, &v);
}
else{
  int v = atoi(inp);
}

暫無
暫無

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

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