无法解析C中的char数组

时间:2013-11-21 17:01:03

标签: c strtok

这是我要解析的char数组:

array1 word 2, 3, 4, 5, 6, 7

现在我已经编写了以下代码来尝试这样做:

    char* variableName = strtok(currentLine, " "); // array1

    strtok(NULL, " "); // skip the 'word' token
    char arrayOfElements[256]; // 256 = maximum line size

    char* currentElement = strtok(NULL, " "); // currentElement = "2,"
    strcpy(arrayOfElements, currentElement); // arrayOfElements = "2,"

    int numberOfArrayElements = 1;

    while (currentElement != NULL ) { // <== I think it's a inifinite loop becuase of this condition but I don't know how to fix this condition
        currentElement = strtok(NULL, " "); // = "3," on first pass
        strcat(arrayOfElements, " "); // = "3, " on first pass
        strcat(arrayOfElements, currentElement); // arrayOfElements = "2, 3," on first pass
        numberOfArrayElements++;
    }

我的最终目标是我想要arrayOfElements = 2,3,4,5,6,7

1 个答案:

答案 0 :(得分:0)

重新排序代码,以便在尝试使用指针之前进行测试。此外,arrayOfElements需要初始化。

char* variableName = strtok(currentLine, " "); // array1

strtok(NULL, " "); // skip the 'word' token
char arrayOfElements[256]; // 256 = maximum line size

char* currentElement = strtok(NULL, " "); // currentElement = "2,"
int numberOfArrayElements = 0;
arrayOfElements[0]='\0';  // initialize the array to an empty string.

while (currentElement != NULL ) {
    if (numberOfArrayElements > 0) 
        strcat(arrayOfElements, " ");
    strcat(arrayOfElements, currentElement);
    numberOfArrayElements++;
    currentElement = strtok(NULL, " ");
}