0

こんにちは、sscanf を使用して文字列が整数かどうかをテストしようとしていますが、戻り値 (j) として常に 0 を返し、1 (変更がない場合もあります) を与えている場合、受信可能な変数 (i ) !これが私のコードです:

#include <stdio.h>                               

int main ()                                      
{                                                

  char sentence []="123456";                     
  int i=0;                                       

   j = sscanf(sentence,"%[0-9]",&i);              
   return 0;                                      
}   

どこが間違っているのか教えてください!文字列の整数をテストする方法が他にもあることは知っていますが、どこが間違っているのか知りたいです! 助けていただければ幸いです。前もって感謝します

4

2 に答える 2

1

数字のみsscanf()の検証に使用する場合(お勧めしません)、フォーマットがオフになっています。抽出されたデータを収集するには、char 型のみを使用する必要があります。

これを試して:

char message[] = "123456";
char buffer[128];

if (sscanf(message, "%127[0-9]",buffer) == 1)
    printf("Success : %s\n", buffer);

セットベースの抽出がどのように機能するかを理解するのに役立つように、範囲をいじってみてください (たとえば、[2-9] に変更します)。ただし、繰り返しますが、これらは char 型のバッファーに対してのみ実行できます。

そうは言っても、値が必要な場合、または単に数字の内容を検証したい場合は、 or を (必要な場合にのみ) 使用strtol()するatoi()isdigit()が適切な場合があります。あなたが決める。

于 2013-04-04T03:57:28.477 に答える
0

あなたが望むものを試すこともできstrtol()ます。参照: atol() v/s。strtol()

于 2013-04-04T03:48:38.313 に答える