使用strtok和数组从文件读取并写入另一个文件

时间:2019-05-10 23:44:55

标签: c file-io strtok

我有一个使用strtok函数的有关C语言的项目。我正在使用while循环读取文件,并使用定界符“”(空格)连续标记句子中的单词。在读取文件时,如果遇到在文件A中用if语句指定的单词,则必须将特定的行写入文件B(扩展宏处理器)。问题在于,每当我尝试从文件A读取并分别将文件B中的每一行写入时,我只会从文件A中获得最后一行,在这里我需要检查每一行并逐行写入。

while(fgets(str,100,fp) != NULL){
    fgets(str,100,fp);
    if (str[0] == '@')
    {
        char *array[300];
        char *p = strtok (str," \n");
        while (p != NULL)  //tokenize the words, and save into array
        {
            array[i++] = p;
            p = strtok (NULL, " ");
        }
        if (!strcmp(array[0],"@def"))  // if the very first word encountered in the line is @def, write the words below into the file B
        {
            fprintf(fptr2, "define %s %s\n",array[1],array[2]);
        } //defining a global variable
        else if (!strcmp(array[0],"@mat"))// if the very first word encountered in the line is @mat, write the words below into the file B
        {
            fprintf(fptr2, "int %s[%s][%s]\n",array[1],array[2],array[3]); 
        }//defining a 2 dimensional array with dimensions MxN
    }
}

如果文件A包含以下几行:

@mat A N M
@def N 100

文件B仅写以下行:

define N 100

但应该有

int A[N][M]
define N 100

类似地,如果文件A包含以下行:

@def N 100
@mat A N M

文件B的这一行写在这里:

int A[N][M]

但应该有

define N 100
int A[N][M]

0 个答案:

没有答案