gpt4 book ai didi

c - c中的瞬时数字输入

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:11 25 4
gpt4 key购买 nike

我想取一个很长的整数(它最多可以包含 1000 位数字)。我想将它存储在一个数组中,以便每个数字都位于数组的每个位置。但是如果我尝试使用下面的代码,它会将整个数字放在 0 位置,直到我按下回车键。但我不能按回车键。每个数字将被单独扫描,即使用户将其写为一个完整的数字。

for(count=0;number[count]!='\0';count++){
scanf("%d",number+count);
}

那里的路是什么??

最佳答案

不要使用scanf。使用 fgets 获取一行输入作为 char*,然后您可以从 char* 中提取单个数字作为字符,并转换他们自己为 int 数字。 scanf("%d", ...) 如果用户输入无法解析为数字的输入,将会导致问题。

char *inputLine = malloc(sizeof(char) * (MAX_DIGITS + 1);
fgets(inputLine, MAX_DIGITS, stdin); // or replace stdin with a FILE *

fgets 将消耗整个输入行直到换行符,或者在参数 2 指定的字符数处停止。

如果您想继续逐位读取,则使用 getchar() 读取单个字符,或使用 fgetc(FILE *) 从中读取单个字符一个文件。

char *inputLine = malloc(sizof(char) * (MAX_DIGITS + 1));
char ch = getchar();
int i = 0;
while ((ch != '\n') && (ch != EOF) && (i < MAX_DIGITS))
{
inputLine[i++] = ch;
ch = getchar();
}

关于c - c中的瞬时数字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819352/

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