2016-09-13 2 views
-3

zu konvertieren Mein aktuelles Problem ist es, eine unbekannte Anzahl von ganzen Zahlen aus stdin einzulesen. Mein Ansatz ist es, mit gets() die gesamte Zeile als char-Array zu speichern (char str[50]). Ich versuche, das Char-Array zu analysieren und jedes "String int" in eine ganze Zahl zu konvertieren und in einem int-Array zu speichern. Ich versuchte mit strtol (nums[i]=strtol(A, &endptr, 10) wo A ist die Char-Array. Endptr scheint jedoch nichts zu speichern, wenn der Rest der A auch Zahlen sind. Zum Beispiel, wenn A ist "8 Hallo" Endptr = Hallo, aber wenn A ist " nichts 8 6 4" endptr ist.Beste Möglichkeit, Array von Strings zu Array von Int in C

gibt es einen besseren Ansatz? ist das möglich mit atoi? Jede Hilfe sehr dankbar! Vielen Dank!

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

Iterieren Sie über die Arrays und konvertieren Sie jede Zahl. Was ist das Problem? Zeigen Sie Ihren Code. Dies ist kein Kodierungsdienst. – Olaf

+1

Vage Frage ohne Code. Kannst du bitte einen Code posten? –

+0

Wenn A = "12 35 78" wie würde ich über das Char-Array iterieren gehen? Ich könnte es in "1 2 3 5 7 8" umwandeln, aber das ist nicht was ich brauche. –

Antwort

0

Dies sollte die (positive) ganze Zahlen extrahieren und überspringen rechts über alles andere ist das keine ganze Zahl:

#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; 
}