Проблема с пропусками строк - PullRequest
0 голосов
/ 25 марта 2011

Следующий код пропускает нечетные строки, такие как 1,3,5,7,9 ...... wat необходимо сделать, чтобы получить все строки из файла, используя этот код

set in [filename r]
seek $in 0 start
while { [gets $in line] != -1 } {
    gets $in line
    puts $line
}

Ответы [ 2 ]

4 голосов
/ 25 марта 2011

Вы делаете gets $in line один раз в состоянии и один раз внутри тела цикла;прочитанная в условии строка в результате теряется.Вы, вероятно, хотите удалить элемент из тела цикла.

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

Вы использовали дважды получает, поэтому вы получаете только нечетные строки

Другое решение:

Вместо использования get я предпочитаю использовать функцию чтения, чтобы прочитать все содержимое файлаа затем обрабатывать эти строки за строкой.Таким образом, мы полностью контролируем работу над файлом, имея его в виде списка строк

set fileName [lindex $ argv 0]

catch {set fptr [open $ fileName r]};

установить содержимое [read $ fptr]; # прочитать содержимое файла

закрыть $ fptr; закрыть файл, поскольку он был прочитан сейчас

set splitCont [split $ contents"\ n"]; # Разбить содержимое файлов на новую строку

splitCont - список, в котором строки файла имеют отдельные элементы

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