c читать текстовый файл в массив построчно и печатать их - PullRequest
4 голосов
/ 16 декабря 2009

у меня есть следующий фрагмент кода c #

              string[] lines = File.ReadAllLines(@"C:\test.txt");
              for(int i=0; i<lines.Length; i++)
                  Console.WriteLine(lines[i]);

Можете ли вы помочь мне преобразовать его в C.

Спасибо!

Ответы [ 6 ]

2 голосов
/ 16 декабря 2009

Если вы планируете использовать Ansi Standard C, вам понадобятся fopen, fgets и printf, чтобы делать то, что вы хотите.

Вот учебник, который делает почти то, что вы хотите .

1 голос
/ 16 декабря 2009

Посмотрите на функции fopen и fgets .

В частности,

fgets будет считывать, пока не будет достигнут символ новой строки, поэтому он идеально подходит для чтения в текстовых файлах строки за раз.

0 голосов
/ 19 февраля 2010

Использование fgets предлагает сложные крайние случаи:

  • Что если длина строки больше размера буфера фиксированной ширины?
  • Что если файл не заканчивается новой строкой?
  • Что если последняя строка точно помещается в буфере, не устанавливая состояние конца файла?

В своем блоге я опубликовал пример того, как сделать это надежно с fgets.

0 голосов
/ 16 декабря 2009

Вы можете сделать это простым способом с C ++.

ifstream input("test.in");
string line;
while(getline(input, line)) {
  //Your code for the current line
}
0 голосов
/ 16 декабря 2009

Как раз того, чего стоит, если вы просто копируете данные из одного потока в другой, вам не нужно беспокоиться о том, чтобы делать это построчно - строки определяются символами новой строки (или возврат каретки и / или возврат каретки / перевод строки) в данных.

Если вы просто скопируете данные без изменения, строки будут сохранены. Чтобы максимизировать скорость, вы, вероятно, захотите открыть файл в двоичном режиме и использовать fread / fwrite для одновременного копирования достаточно больших фрагментов (например, 4 мегабайта) данных.

0 голосов
/ 16 декабря 2009

процесс должен работать почти так же, как ожидалось:

Откройте файл, выясните кодировку (для вас это делает ReadAllLines), прочитайте ввод с предполагаемой кодировкой, перекодируйте его в целевой формат - который, вероятно, будет UTF16 - и распечатайте его в стандартный вывод ...

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