我想将逗号分隔字符串的值(数字)存储在数字数组中,并在C中将所有空值设置为0



我想将所有这些值存储在一个数字数组中输出应为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就不会变大。

最新更新