Как использовать getline и strtok вместе в C? - PullRequest
1 голос
/ 27 марта 2011

Я впервые задаю вопрос здесь, поэтому я надеюсь, что делаю это правильно!Некоторое время я пытался заставить getline и strtok работать вместе, чтобы читать текст из файла и разбивать его на слова.По сути, ввод текстового файла - это эссе, и я хочу позже манипулировать каждым словом индивидуально.Проблема, которую я получаю, состоит в том, что константа «присваивает указателю целое число без приведения»;Я перепробовал все, что мог придумать.Это мой код на данный момент:

int nbytes = 100;
char *buffer;
char *token;
buffer = (char *) malloc(nbytes + 1);
getline(&buffer,&nbytes,file);
token = strtok(&buffer, " ");

Я чувствую, что это проблема чего-то действительно простого, что я пропускаю.Это вы для чтения и вашей помощи!

Ответы [ 3 ]

2 голосов
/ 27 марта 2011

Стандарт C (сам по себе) не определяет ничего с именем getline.Для чтения строки из файла вы обычно используете fgets.

Ошибка, которую вы описываете звучит , как будто у вас нет прототипа для strtok в области видимости, поэтомуобрабатывая его так, как если бы он возвращал тип по умолчанию (int).Обычно вы устраняете это, добавляя #include <string.h> где-то близко к началу файла.

1 голос
/ 27 марта 2011

Не думаю, что вы хотите &buffer в вашем strtok() звонке. Кроме того, вы не включаете string.h, поэтому вы получаете предупреждение «присваивание делает указатель целочисленным без приведения». В отсутствие правильного прототипа для strtok() компилятор предполагает, что он возвращает int. Преобразование этого int в char * для назначения на token является назначением, на которое он жалуется.

Edit - спасибо @dmckee за подпись getline().

0 голосов
/ 27 марта 2011

еще одна ошибка - использование & buffer вместо буфера.

& buffer - указатель на указатель на символ, но вам нужен указатель на символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...