c - 将 atoi() 返回的 int 插入数组

标签 c arrays atoi

我有一个来自 strtok() 的 token ,我想使用 atoi() 将其转换为整数并放置在数组中。但是,我遇到了困难。

char string[LMAX];
int array[LMAX];
int number;
char *token = NULL;
int count = 0;
FILE *fp;
fp = fopen("test.txt","r");

while(fgets (string, LMAX, fp) != NULL) { 
   //Reading the file, line by line
   printf("%s", string);
   token = strtok(string,",");
   array[count++] = atoi(token);
   //printf("%d",array[count]);
   while(token=strtok(NULL,";,")){
   number = atoi(token);
   array[count++] = number;
   printf("%d",array[count++]);
   } 

}

number 的类型为 int,该数组也初始化为 int 数组。

当我运行以下代码时,我打印出全 0,但有趣的是,当我将 printf("%d", number); 替换为 printf("%d", atoi(token));,我得到了正确的输出。我希望能够实际存储 atoi(token),但它不允许我这样做。

任何帮助都很棒

编辑:LMAX = 1024

最佳答案

It's only when I put array[count++] in the printf statement that it gives me 0's in the output

这是因为count++有副作用。当您分配array[count++]时然后打印array[count++] ,您没有打印相同的值,因为第二次索引会递增。

此外,计数将增加两次,因此 array 中的每个其他值将是未初始化的。

如果要打印刚刚存储在数组中的值,请使用 count-1对于索引:

while(token=strtok(NULL,";,")){
    number = atoi(token);
    array[count++] = number;
    printf("%d",array[count-1]);
} 

关于c - 将 atoi() 返回的 int 插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29248113/

相关文章:

c - 使用 atoi 调用获取段错误

c++ - atoi 与整数和 double

javascript - 如何每周显示数组中的一项

php - 如何在 php 数组中的每个对象中添加一个新的键值对?

c - select() 带有 const 超时参数?

c - 赋值时的位移位对变量没有影响

mysql - SQL查询多个表,多个连接和列字段用逗号分隔列表

c - 打印出额外的数字? (C)

c++ - 尾调用优化是否适用于此功能?

c - [QuickSort]递归问题