解析输入并添加到struct数组

时间:2014-10-10 21:26:21

标签: c arrays struct strtok

我有一些代码试图从文件中获取数据。格式是这样的:9 / 2d 0 / 1s。文件中可能有多个,但我需要取第一个数字并将其设置为要添加的索引。然后我需要将下一个数字和字符保存为单独的值。我在这里有一些代码,但它没有那么好用。

    struct matrix tokens[nbrState][12];
    int *num = 0;
    int index = 0;
    while ((ptr = fgets(buf, 256, fp)) != NULL){
            ptrToken = strtok(buf, "/");
            int count = 0;
            for(int r = 0; r < 12; r++){
                    if(count >= 3){
                            ptrToken = strtok(NULL, " ");
                            index = atoi(ptrToken);
                            tokens[index][r].state = index;
                    }
                    count++;
            }
    }

这是我更新的代码。它的效果更好。

    struct matrix tokens[nbrState][12];
    char *tok;
    int index = 0;
    int state = 0;
    while((ptr = fgets(buf, 256, fp)) != NULL){
            ptrToken = strtok(buf, " ");
            tok = ptrToken;
            //index = strtok(tok, "/");
            for(int r = 0; r < 12; r++){
                    index = atoi(tok);
                    state = atoi(ptrToken);
                    tokens[index][12].state = state;
            }
    }

1 个答案:

答案 0 :(得分:0)

你可以试试这个

while ( ( fscanf ( fp, "%d/%d%c", &index, &separateInt, &separateChar) == 3) {
    // use values as needed
    tokens[index][11].state = sepatateInt; 
}

循环将继续,直到EOF或文件输入与格式不匹配。