Ожидаемый ввод в мою программу для моего задания - это что-то вроде ./program "hello" < helloworld.txt
. Проблема с этим, однако, что я должен проанализировать каждую строку, которая находится в программе, так что я использовал охранник в конце строки, как:C - Чтение из файла с последней строкой
while((c = getchar()) != EOF) {
if (c == '\n') {
/*stuff will be done*/
Однако, моя проблема состоит в том, что если в helloworld.txt
файл содержит:
hello
world
Он будет читать только первую строку (до второй последней строки, если должны были быть больше линий).
Для этого быть фиксированным, я должен строго сделать новую линию таким образом, что helloworld.txt
выглядит примерно так:
hello
world
//
Есть еще один способ обойти это?
У вашего оригинального файла есть символ новой строки в конце 'world'? Некоторые редакторы добавляют их, некоторые - нет. Возможно, «делайте вещи» на EOF, а также '\ n'? – DevSolar
@DevSolar Я просто предполагаю худшее, в котором человек, отмечающий это, использует тестовый файл, у которого нет новой строки. – Laefica
Но в этом случае вы читали символы *, но не делали «материал» *, когда вы сталкиваетесь с EOF (и предположительно выходите). Вот почему ваша последняя строка не появляется. – DevSolar