gpt4 book ai didi

c - 在 C 中将字符串数组转换为 Int 数组的最佳方法

转载 作者:行者123 更新时间:2023-11-30 21:08:20 25 4
gpt4 key购买 nike

我当前的问题是从 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,但是当 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++;
}

最佳答案

这应该提取(正)整数并直接跳过任何其他非整数:

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

关于c - 在 C 中将字符串数组转换为 Int 数组的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39478435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com