gpt4 book ai didi

c - 如何在事先不知道长度的情况下要求用户输入?在 C 中

转载 作者:行者123 更新时间:2023-12-01 14:00:53 24 4
gpt4 key购买 nike

我想要 {{a,b},{c,d}} 形式的用户输入(单行)来表示一个矩阵。矩阵的维度是已知的。使用 getchar(),我无法处理整数大于 9 的情况,除非绕过非常长的弯路。使用 scanf(),它会在每次使用该函数后换行。如何正确请求这种格式的输入?在我看来,一定有比 getchar() 更简单的方法。

如前所述,我曾尝试使用适用于单个数字整数的 getchar() 循环,但是当考虑多个数字时,循环的长度变得不正确。然后,我尝试了下面的代码,但它似乎也不起作用。

int i=0;
int j=0;
for (int k=0;k<loopSize;k++){
scanf("%d%c",&element,&c);
matrix[i][j]=element;
j++;
if (j%columns==0){
i++;
j=0;
}
}

如何正确请求输入?提前致谢。

最佳答案

你可以像下面这样使用getchar()

int val = 0;
int number = 0;
int dimLevel = 2;
int state = 0; //

while ((val = getchar()) != '\n){

if (val == '{' && state <= dimLevel){
state++;
}
else if (val == '}' && state > 0){
state--;
}
else if (val == ',' && state == dimLevel){
matrix[i][j] = number;
number = 0;

if (j%columns==0){
i++;
j=0;
}
}
else if (isdigit(val) && state == dimLevel){
number = number*10 + (val-'0');
}
else if (val == '-' && state == dimLevel){
number *= -1;
}
}

if (number && state == 0)
matrix[i][j] = number; //last number

关于c - 如何在事先不知道长度的情况下要求用户输入?在 C 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58188601/

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