我是C中的新手,试图分割用户输入的整数字符串,并将它们存储在int[]的动态表中。如果我打印出atoi(令牌)值-它显示所需的整数。但当试图将其分配给表-我得到如下值。我做了一些错误的表,因为当试图通过tabSize表单元格我得到类似的结果。我将感谢任何见解,我已经搜索了网络,但没有发现类似的问题。
我要达到的目标是:
//Input:
1,2,3,4
//Output:
tab[0] == 1
tab[1] == 2
tab[2] == 3
tab[3] == 4
What im getting is:
//Output:
tab[0] == 0
tab[1] == 0
tab[2] == 0
tab[3] == 4
Below code im trying:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *input;
int *tab;
int tabSize = 0;
scanf("%s", &input);
char *token = strtok(&input, ",");
while(token != NULL)
{
tab = (int*)calloc((tabSize + 1), sizeof(int));
tab[tabSize] = atoi(token);
token = strtok(NULL, ",");
tabSize++;
}
for (int i = 0; i < tabSize; i++)
{
printf("n%d", tab[i]);
}
free(tab);
return 0;
}`
提前谢谢你
感谢您的回复,我已经设法解决了这个问题:)调用多次malloc()导致覆盖现有数据。我使用malloc()初始化*tab一次,然后通过调用relloc()改变表的大小。
这里是更新的代码,以防有人遇到类似的问题:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *input;
int *tab;
int tabSize = 0;
scanf("%s", &input);
char *token = strtok(&input, ",");
tab = (int*)malloc(1*sizeof(tab[0]));
while(token != NULL)
{
tabSize++;
tab = realloc(tab, tabSize*sizeof(tab));
tab[tabSize - 1] = atoi(token);
token = strtok(NULL, ",");
}
for (int i = 0; i < tabSize; i++)
{
printf("n%d", tab[i]);
}
free(tab);
return 0;
}