我想将所有这些值存储在一个数字数组中输出应为014182 70 90 0 0
,依此类推。。。。。。我得到了一个非常有趣的输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH_OF_NUMBER 9
char *string ;
char *comma ;
char *position ;
char total ;
int scores[42], i, j ;
char number[MAX_LENGTH_OF_NUMBER + 1] ;
int main()
{
string = "014182,70,90,,,,,89,,69,76,80,,,80,,100,,76,,,,,,,,,,,,,,,,,,,,,,90," ;
comma = strchr (string, ',') ;
position = string ;
while (comma)
{
i, j = 0 ;
while (position < comma) {
number[i] = *position ;
i++ ;
position++ ;
}
number[i] = ' ' ;
position++ ;
comma = strchr (position, ',') ;
scores[j] = atoi (number) ;
printf("%dn", scores[j]) ;
j++ ;
}
}
这是一个非常大的问题:
i, j = 0 ;
这实际上是两个不同的表达式,这要归功于逗号运算符:
i
和
j = 0
表达式i
被简单地忽略,然后执行j
的赋值。
我想你想做
i = 0;
j = 0;
与此相关的是,在循环顶部分配j
意味着您将一次又一次地覆盖相同的(第一个)scores
条目。
您还应该进行一些边界检查,这样j
就不会变大。