int main(void)
{
int i, a[10], sum = 0;
int * b;
b = a;
char c[10];
printf ("Please enter some numbers:\n");
for(i = 0 ; i < 10 ; i++)
{
(void) fgets(c, (sizeof * b), stdin);
if(c[0] == '\n')
{
break;
}
*(b + i) = atoi(c);
sum = sum + *(b + i);
}
printf ("sum : %d \n", sum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
$Please enter some numbers:
$32
$31
$1
$
$sum:64
Run Code Online (Sandbox Code Playgroud)
$Please enter some numbers:
$123
$sum:123
$Please enter some numbers:
$12
$123
$sum:135
Run Code Online (Sandbox Code Playgroud)
$Please enter some numbers:
$2123
$
$sum:215 //The sum became 212+3.
$Please enter some numbers:
$12345
$11
$
$sum:179 //The sum became 123+45+11.
$Please enter some numbers:
$123456
$sum:579 //If the number of digits is a multiple of 3, this program directly prints sum(=123+456).
Run Code Online (Sandbox Code Playgroud)
这是错的:
fgets(c,sizeof* b,stdin);
Run Code Online (Sandbox Code Playgroud)
sizeof *b是int(一般4)的大小,你想要10人物的空间:
fgets(c,sizeof c,stdin);
Run Code Online (Sandbox Code Playgroud)
请注意,fgets在这个具体案例之后,你不需要从atoi男人那里去掉尾随的新行:
字符串可以包含在形成整数之后的其他字符,这些字符将被忽略并且对此函数的行为没有影响.