回答編集履歴

1 fix typo

mattn

mattn score 4514

2017/08/02 23:54  投稿

C言語で文字列を数値にするには atoi を使います。
```c
while (atoi(buf) != s);
```
ただし気を付けないといけないのは atoi は例えば数字でない物を入力した場合でも 0 になってしまいます。つまり本当に 0 を入力したのか abc を入力したのか分からないという事です。
これを解決するには stotol という関数を使います。
これを解決するには strtol という関数を使います。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char* argv[]) {
 int n;
 char *err = NULL;
 char buf[20];
 strcpy(buf, "1s"); // サンプルの入力
 n = strtol(buf, &err, 10);
 if (err != NULL) {
   printf("入力エラーです。エラーの位置は: %s\n", err);
 } else {
   printf("入力した数値は %ld です\n", n);
 }
 return 0;
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る