2016-09-13 36 views
-3

私の現在の問題は、未知数の整数をstdinから読み込むことです。私のアプローチは、gets()を使って行全体をchar配列(char str[50])として保存することです。私は、char配列を解析し、それぞれの "string int"を整数に変換し、int配列に格納しようとしています。私はstrtolを使用しようとしましたが(nums[i]=strtol(A, &endptr, 10)ここではAはchar配列ですが、endptrはAの残りの部分も数字であるとは何も格納していません。例えばAが "8 hello"の場合endptr = helloですが、 8 6 4" endptrが? 文字列の配列をCの配列に変換する最も良い方法

がより良いアプローチがあります。何もありません atoiでこれは可能ですか?すべてのヘルプは大歓迎です!ありがとう!これは、(正の整数)を抽出し、右飛ばしてください

char A[1000]; 
long nums[1000]; 
printf("Enter integers: "); 
gets(A); 
char *endptr; 
int i=0; 
while(endptr!=A){ 
    nums[i]=strtol(A, &endptr, 10); 
    i++; 
} 
+0

配列全体を繰り返し、各数値を変換します。どうしたの?コードを表示する。これはコーディングサービスではありません。 – Olaf

+1

コードの不明瞭な質問。あなたはいくつかのコードを投稿できますか? –

+0

A = "12 35 78"の場合、char配列を反復処理する方法は?私はそれを "1 2 3 5 7 8"に変換することができますが、それは私が必要とするものではありません。 –

答えて

0

整数ではない他のものより:

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 

char string[1024]; 
long numbers[512]; // worst case ~ 1/2 number of chars = "1 1 1 1 1 1 ... 1" 

/* ... */ 

printf("Enter integers: "); 
fgets(string, sizeof(string), stdin); 

char *endptr, *ptr = string 
int count = 0; 

while (*ptr != '\0') { 
    if (isdigit(*ptr)) { 
     numbers[count++] = strtol(ptr, &endptr, 10); 
    } else { 
     endptr = ptr + 1; 
    } 

    ptr = endptr; 
} 
関連する問題