В настоящее время изучаю C, возникли проблемы с передачей токенов c-string в массив.Строки поступают с помощью стандартного ввода, strtok используется для разбиения строки, и я хочу правильно поместить каждую в массив.проверка EOF необходима для выхода из входного потока.Вот что я сделал, настроил так, чтобы он выводил мне токены обратно (эти токены будут конвертированы в ASCII в другом сегменте кода, просто пытаясь заставить эту часть работать сначала).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char string[1024]; //Initialize a char array of 1024 (input limit)
char *token;
char *token_arr[1024]; //array to store tokens.
char *out; //used
int count = 0;
while(fgets(string, 1023, stdin) != NULL) //Read lines from standard input until EOF is detected.
{
if (count == 0)
token = strtok(string, " \n"); //If first loop, Get the first token of current input
while (token != NULL) //read tokens into the array and increment the counter until all tokens are stored
{
token_arr[count] = token;
count++;
token = strtok(NULL, " \n");
}
}
for (int i = 0; i < count; i++)
printf("%s\n", token_arr[i]);
return 0;
}
это кажется мне правильной логикой, но потом я все еще учусь.Кажется, проблема связана с потоковой передачей в несколько строк перед отправкой сигнала EOF с помощью ctrl-D.
Например, при вводе:
this line will be fine
Программа возвращает:
this
line
will
be
fine
Но если дано:
none of this
is going to work
Возвращает:
is going to work
ing to work
to work
любая помощь очень ценится.Я продолжу над этим работать.