Поместить нулевое значение после строки после чтения из файла на C - PullRequest
0 голосов
/ 04 февраля 2011

Как добавить нулевой символ в конец строки, считываемой из файла, строки которого имеют разные размеры ... примерно так:

AAAAA BBBBB

AAAA BBBBBB

AAAAA BBBBB

Я бы хотел прочитать только первую строку в каждой строке.Я хотел бы поместить это в строку.Тем не менее, C не ставит нулевые значения в конце строк, вы должны сделать это самостоятельно.Как я могу получить нулевой символ в конце строки при использовании fscanf ... это возможно?Нужно ли использовать другую функцию для чтения в файле вместо fscanf?

Извините за простую проблему.Я просто нигде не могу найти ответ ...

Ответы [ 4 ]

1 голос
/ 04 февраля 2011

Вы имеете в виду, что хотите нулевое значение в конце каждой строки?

Документация Linux fscanf гласит, что null добавляется автоматически, если вы используете %s.

   s      Matches a sequence of non-white-space characters;
            the next pointer must be a pointer to character array
            that is long enough to hold the input sequence and
            the terminating  null  character ('\0'), which is
            added automatically.  

Или вы имеете в виду, что хотите, чтобы во входном файле был пробел?

strtok будет одним из способов достижения этого.

0 голосов
/ 04 февраля 2011

Создайте два буфера:

char buf1[1000], buf2[1000];

Используйте это, чтобы прочитать первое слово в строке:

fscanf(f,"%s", buf1);

Затем используйте это, чтобы прочитать остаток строки:

fscanf(f,"%[^\n\r]s", buf2);

Теперь у вас есть первое слово в buf1, а остальная часть строки в buf2.

0 голосов
/ 04 февраля 2011

Для построения строк вы должны использовать стандартные функции lib-lib. Они будут ставить завершающий '\ 0'.

#define MAXLINE 1000
char line[MAXLINE], yourstring[MAXLINE];
while( fgets(line,MAXLINE,yourfilepointer) )
{
  sscanf(line,"%s",yourstring); /* here has yourstring ever a terminating '\0' */
  printf("first word is: %s\n",yourstring);
}
0 голосов
/ 04 февраля 2011

Объявите буфер символов любого размера, максимальная длина строки. Используйте функцию fgets (), чтобы прочитать каждую строку в буфер ... fgets () завершит буфер нулем.

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