ibilalkayy Ответов: 1

Как дать переменную первым словам каждой строки?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STRING_LEN 200

int main(){
  char string[STRING_LEN];
  FILE * fp1 = fopen("file.csv", "r");
  char * data[2];

  while(fgets(string, STRING_LEN, fp1)){
    data[0] = strtok(string, ",");
    data[1] = strtok(NULL, ",");

    printf("%s\n", data[0]);
  }
  
  return 0;
}


Что я уже пробовал:

В этом коде я читаю данные строка за строкой по вертикали. данные[0] читает первую строку вертикально перед запятой. data[1] читает вторую строку вертикально перед запятой вот так

data[0], data[1]
word1,  word3
word2,  word4


Я хочу прочитать данные вертикально, но данные[0] должны быть первым словом из первой строки, данные[1] должны быть первым словом из второй строки.

data[0] = word1
data[1] = word2

Rick York

После того как вы разделили токены на каждой строке, вы можете сохранить все, что хотите сохранить, и делать с ними все, что хотите. Поэтому спросите себя, как вы сохраняете первые жетоны из первых двух строк? Вы не можете просто сохранить указатель, потому что вторая строка перезапишет первую строку в строке. Это означает, что должно быть место для хранения данных. Вы можете либо объявить его как локальные переменные в стеке, либо выделить для него память. Что ты всегда предпочитаешь.

1 Ответов

Рейтинг:
0

Rick York

Я дал вам код для функции, которую вы можете использовать в своем предыдущем вопросе. Вот как вы можете его использовать :

#define MAX_TOKENS 16
    const char * delims = ",.";
    char * tokens[ MAX_TOKENS ] = { NULL };
    int count = 0;
    int x;

    // open the file here

    // read a line of text from the file into string and call this :

    count = ParseTokens( string, delims, tokens, MAX_TOKENS );
    for( x = 0; x < count; ++x )
    {
       printf( "token %d is '%s'\n", x, tokens[ x ] );
    }
Поместите эту строку в текстовый файл и затем прочитайте ее :
first token,second token,third token,fourth token.
Когда я попробовал это сделать, то получил следующий результат :
token 0 is 'first token'
token 1 is 'second token'
token 2 is 'third token'
token 3 is 'fourth token'