私はcプログラミングプロジェクトの一部としてこの問題を抱えています。char型配列(char*str
)へのユーザー入力を読み取り、入力された文字列の一部を整数に変換する必要があります。入力は「Asmeagol21fire22」の場合があります。
ここにいくつかのテストがあります。x = 40を取得しようとします。このコードはx = -4324242を与えます。このコードが機能しないのはなぜですか?
#include <stdio.h>
int main(){
char *uga[1];
uga[0] = "10";
printf("%s\n", uga[0]);
int x = 50 - (int)uga[0];
printf("%d",x);
}
よろしくお願いします。
strtol
、sscanf
またはatoi
を使用して文字列をintに変換できます。例えば:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main() {
char *str[3] = {"10", "20 test of strtol\n", "30"};
int a = atoi(str[0]);
printf("a = %d\n", a);
char *ptr;
long int b = strtol(str[1], &ptr, 10); // you can alse use strtoll for long long int
printf("b = %ld, string: %s", b, ptr);
int c;
sscanf(str[2], "%d", &c);
printf("c = %d\n", c);
return 0;
}
出力:
a = 10
b = 20, string: test of strtol
c = 30
コードでuga[0]
は、は文字を指すポインタです。したがって(int) uga[0]
、char
ポインタのアドレスをキャストするだけです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加