我目前的问题是从stdin
读取未知数量的整数。我的方法是使用gets()将整行存储为char数组(char str[50]
)。我试图解析char数组并将每个“string int”转换为整数并存储在int数组中。我尝试使用strtol(nums[i]=strtol(A, &endptr, 10)
,其中A
是char数组。但是,当A的其余部分也是数字时,endptr似乎不存储任何内容。例如,如果A是“8 hello”endptr =你好,但是当A是“8 6 4”时,endptr什么都没有。
有更好的方法吗?这可能是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 :(得分: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;
}