gpt4 book ai didi

c - 查找用户必须输入带有参数(例如 'sum(par1, par2,...)')的命令的总和

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

用户输入带有参数的命令。没有错误,但我遇到了奇怪输出的问题。我将输入作为字符串,确定输入是否与命令“sum”匹配,如果匹配则提取 sum[] 之间的参数,将它们存储在数组中并将它们作为参数发送给 sum 函数。

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

int sumOfArray(int arr[])
{
int sum=0;
for(int i=0;i++;i<sizeof(arr))
{
sum = sum + arr[i];
}
printf("%d\n",sum);
return sum;
}

int main()
{
char input[256];
int j=0,temp=0;
int arraySum[6]={0};
printf("user_account $> ");
fgets(input, sizeof(input), stdin);
if (input[0]=='s' && input[1]=='u' && input[2]=='m')
{
if (input[3]!='(')
{
printf("Please enter proper parameters : sum(num1, num2, ..)\n");
}
else
{
for (int i = 4; i++; input[i] < ']')
{
if (input[i] !=',')
{
if (!isdigit(input[i]))
{
printf("Please enter only digits\n");
break;
}
else
{
temp = int(input[i]);
printf("%d\n",temp);
arraySum[j] = arraySum[j]*10 + temp;

}
}
else j++;
}

}
sumOfArray(arraySum);
}
return 0;
}

最佳答案

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

int sumOfPara(void){
int v, sum = 0;
char ch;

while(1){
if(2 == fscanf(stdin, "%d %c", &v, &ch) && (ch == ',' || ch == ')')){
sum += v;
if(ch == ')')
break;
} else {
fprintf(stderr, "Parameter is invalid.\n");
exit(EXIT_FAILURE);
}
}
return sum;
}

int main(void){
char command[32];
char left_paren;

printf("user_account $> ");
if(2 != fscanf(stdin, "%31[a-z] %c", command, &left_paren) || strcmp(command, "sum") != 0 || left_paren != '('){
fprintf(stderr, "Please enter proper parameters : sum(num1, num2, ..)\n");
exit(EXIT_FAILURE);
} else { //rest
printf("%d\n", sumOfPara());
}
return 0;
}

关于c - 查找用户必须输入带有参数(例如 'sum(par1, par2,...)')的命令的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33429986/

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