字符数组在使用strtok

时间:2016-03-25 10:41:17

标签: c arrays file char strtok

我有一个文件,其中每行包含三个我想在数组中读取的单词。 该文件如下所示:

henry eat apple
mary dance heels
jacob backflip papercup
emma freeze pen
olivia clutch throat
emily faint floor
charlotte hunt mouse
adam cut spera
michael drink beer
liam cry stair
batman jump cape
superman shoot laser
wonderwoman whip criminal
spiderman stick web
green_lantern light ring
hulk smash car
reed pull finger
sue hug shoe
johnny fly fire
thing stare flower 

这是我用来读取线条的功能。我使用strtok将每个单词放在一个数组中。

void ReadArrays(int MenuChoice, char * Number[10][4])
{
    FILE *file;
    int counter=0;
    int NumberCounter=0;
    char line[256];
    file = fopen("numbers.txt","r");
    while (fgets(line, sizeof line, file) != NULL)

     {

         if(counter>=(MenuChoice-1)*10 && counter<=MenuChoice*10-1)
         {


             Number[NumberCounter][0] = strtok(line, " ");
             Number[NumberCounter][1] = strtok(NULL, " ");
             Number[NumberCounter][2] = strtok(NULL, " ");
             Number[NumberCounter][3] = counter;
             NumberCounter++;
         }
         counter++; 
         puts(Number[0][0]);
     }
}
  • MenuChoice是一个变量,可帮助您确定要从哪里开始阅读。如果选择1,则读取前十行。如果选择2,接下来的10行。这就是关于

  • 的内容
  • 我想在第二个条件计数器&lt; = MenuChoice * 10-1 ,但我失败了。这样,在你阅读了你想要的10行后,它就不会继续阅读。

  • 另外,我没有做更多检查,因为我正在为自己制作这个程序,所以我知道文件将永远存在或者我不会输入“x”而不是数字。

我必须使用strtok错误或其他东西,因为它根本不起作用。数组会自行更改。我的意思是这是我得到的输出:

henry
mary
jacob
emma
olivia
emily
charlotte
adam
michael
liam
batman jump cape

superman shoot laser

wonderwoman whip criminal

spiderman stick web

green_lantern light ring

hulk smash car

reed pull finger

sue hug shoe

johnny fly fire

thing stare flower
thing stare flower

通常它应该说henry 20次。我也检查过了。它只进入IF十次,所以它不可能改变。我也试过通过使用外部字符串改变我使用strtok的方式,我写了类似

的内容
strcpy(Number[NumberCount][0],extstring)

并分别使用extstring查找更多令牌,同时将其归因于Number [NumberCount] [1]和Number [NumberCount] [2],但它仍无法正常工作。

0 个答案:

没有答案