C,通过标记字符串填充2D数组

时间:2017-10-03 15:08:33

标签: c arrays io tokenize

我试图用逗号分隔的整数填充二维数组。 我已经为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]。

1 个答案:

答案 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