我试图用逗号分隔的整数填充二维数组。 我已经为3x3阵列分配了空间。现在,我试图遍历每行输入文本以获取整数并将它们放在数组中。
这是我到目前为止所做的:
char currLine[257];
char *token;
for(int i = 0; i < size; i++){
fgets(currLine, 257, inputFile);
for(int j = 0; j < size; j++){
}
}
文本格式如下:
9,8,7
2,1,6
3,4,5
我可以成功抓住每一条线,但从那里我一直遇到麻烦。在得到每个数字之后,我当然希望它进入数组的[i] [j]点。所以第一行对应于[0],第一个值对应于[0] [0]。
答案 0 :(得分:0)
对您提供的格式化文本进行标记是微不足道的。看看下面的代码。如果您的目标是浮点数,则可以更改代码。在我的代码中,我假设整数。
#include <stdio.h>
#include <string.h> /* strlen() & memset() */
#include <stdlib.h> /* atoi() */
void getNumbers(const char* ch, int *a, int *b, int *c)
{
int i;
int size = strlen(ch) + 1;
char ar[100];
int n[3];
int j = 0;
int k = 0;
for(i = 0; i < size; ++i){
if( ch[i] != ',' )
ar[j++] = ch[i];
if ( ch[i] == ',' || i == size-1) {
ar[j] = '\0';
n[k++] = atoi(ar);
memset(ar, 0, sizeof(ar));
j = 0;
}
}
*a = n[0];
*b = n[1];
*c = n[2];
}
int main()
{
char *num = "1256,524,765";
int n1,n2,n3;
getNumbers(num,&n1, &n2, &n3);
printf("%d %d %d\n", n1,n2,n3);
return 0;
}
结果是
1256 524 765