2016-09-13 77 views
-3

我目前的问题是从stdin中读取未知数量的整数。我的方法是使用gets()将整行存储为char数组(char str[50])。我想解析char数组并将每个“字符串int”转换为一个整数并存储在一个int数组中。我尝试过使用strtol(nums[i]=strtol(A, &endptr, 10)),其中A是char数组,但是,当A的其余部分也是数字时,endptr似乎不存储任何内容,例如,如果A是“8 hello”endptr = hello,但是当A是“ 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; 
} 
相关问题