gpt4 book ai didi

c - 我需要能够从标准输入读取字符串

转载 作者:行者123 更新时间:2023-11-30 18:14:46 26 4
gpt4 key购买 nike

我正在尝试从标准输入读取一些数据。它将是由空格分隔的数字(任意位数)。问题是我事先不知道长度。我希望能够从标准输入读取并使用它来操作某些东西,这会重复直到按下 ^d 。

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

int
main(){

char input[] = scanf("%s", &input);

for(int i=0; i<sizeof(&input);i++){

//Do something

}

}

这不起作用,但我如何更改它才能使其起作用?

最佳答案

他就是一个例子。您需要添加 malloc 和 realloc 结果检查(为了简单起见,我没有添加)

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

#define CHUNK 32

char *readline(void)
{
size_t csize = CHUNK;
size_t cpos = 0;
char *str = malloc(CHUNK);
int ch;
while((ch = fgetc(stdin)) != '\n' && ch != '\r')
{
str[cpos++] = ch;
if(cpos == csize)
{
csize += CHUNK;
str = realloc(str, csize);
}
}
str[cpos] = 0;
return str;
}

然后你就得到了可以扫描的字符串。使用后释放内存

并将其转换为整数数组(因为您不知道结果数组的大小):

int *tointegers(char *str, char *delimiters, size_t *size)
{
int *array = malloc(CHUNK * sizeof(*array));
char *ptr;

*size = 0;
ptr = strtok (str, delimiters);
while (ptr != NULL)
{
array[(*size)++] = atoi(ptr);
if(*size == CHUNK)
{
array = malloc((*size + CHUNK) * sizeof(*array));
}
ptr = strtok (NULL, delimiters);
}
return array;
}

关于 malloc 和 realloc 结果检查和内存释放的相同评论

关于c - 我需要能够从标准输入读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55619137/

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