我有一个使用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]