14

ユーザー入力を整数として処理したいのですが、Cにはstdinからintを取得する方法がないようです。これを行う機能はありますか?ユーザーからintを取得するにはどうすればよいですか?

4

5 に答える 5

23
#include <stdio.h>

int n;
scanf ("%d",&n);

http://www.cplusplus.com/reference/clibrary/cstdio/scanf/を参照してください

于 2009-05-14T19:44:32.500 に答える
6

scanf()答えですが、外部入力からの数値の解析で多くのことがうまくいかない可能性があるため、必ず戻り値を確認する必要があります...

int num, nitems;

nitems = scanf("%d", &num);
if (nitems == EOF) {
    /* Handle EOF/Failure */
} else if (nitems == 0) {
    /* Handle no match */
} else {
    printf("Got %d\n", num);
}
于 2009-05-14T20:01:59.400 に答える
2

(f)scanf他の回答で十分に議論されているのほかに、すでに文字列への入力を読み取ったが、それをまたはに変換したい場合のために、ともatoiあります。strtolintlong

char *line;
scanf("%s", line);

int i = atoi(line);  /* Array of chars TO Integer */

long l = strtol(line, NULL, 10);  /* STRing (base 10) TO Long */
                                  /* base can be between 2 and 36 inclusive */

strtol数値が正常に読み取られたかどうかを判断できるため、推奨されます(atoiエラーを報告する方法がなく、ガベージが与えられた場合は単に0を返すのとは対照的です)。

char *strs[] = {"not a number", "10 and stuff", "42"};
int i;
for (i = 0; i < sizeof(strs) / sizeof(*strs); i++) {
    char *end;
    long l = strtol(strs[i], &end, 10);
    if (end == line)
        printf("wasn't a number\n");
    else if (end[0] != '\0')
        printf("trailing characters after number %l: %s\n", l, end);
    else
        printf("happy, exact parse of %l\n", l);
}
于 2009-05-14T20:57:46.943 に答える
1

標準ライブラリ関数scanfは、フォーマットされた入力に使用されます:%d int(dは10進数の略です)

#include <stdio.h>
int main(void)
{
  int number;
  printf("Enter a number from 1 to 1000: ");

  scanf("%d",&number); 
  printf("Your number is %d\n",number);
  return 0;
} 
于 2009-05-14T19:48:04.487 に答える
-1
#include <stdio.h>

main() {

    int i = 0;
    int k,j=10;

    i=scanf("%d%d%d",&j,&k,&i);
    printf("total values inputted %d\n",i);
    printf("The input values %d %d\n",j,k);

}

ここから

于 2009-05-14T19:45:16.243 に答える