用户使用parameters.There输入命令没有错误,但是我在奇怪的输出方面有问题。我将输入作为字符串,标识输入是否与命令' 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;
}发布于 2015-10-30 09:52:28
#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;
}https://stackoverflow.com/questions/33429986
复制相似问题