Так что я получил каталог, который называется температураЧтение текстового файла с помощью аргументов командной строки не работает
temp
Он содержит:
assets bin src include Makefile
Каталог активов содержит «file.txt ", который заполнен некоторыми алфавитными символами клавиатуры.
Моя папка ЦСИ также включает в себя файл «file.c», который
#include "file.h"
int main(int argc, char * argv[])
{
initscr();
noecho();
cbreak();
char ch;
FILE * ptr;
if(strcmp(argv[1],"file.txt") == 0)
{
ptr = fopen("file.txt","r");
if(ptr == NULL)
{
mvprintw(0,0,"Error reading the file\n");
refresh();
exit(1);
}
else
{
while((ch =fgetc(ptr)) != EOF)
mvprintw(0,0,"%c",ch);
refresh();
}
}
else
{
mvprintw(0,0,"you didn't specify the right .txt file");
exit(1);
}
endwin();
fclose(ptr);
return 0;
}
Makefile, содержит:
all:
gcc -Wall -pedantic -std=c99 -Iinclude src/file.c -o bin/runMe -lncurses
Однако после успешной компиляции, идя в каталог бен и набрав ./runMe file.txt
концы (не печатает на экране ничего нового (не печатает символы «abc», которые находятся в текстовом файле (находится в каталоге активов).
Что случилось?
Учитывая ваш пример, он должен напечатать «вы не указали правильный файл .txt» (потому что код хочет «input.txt») вам необходимо поставить обновление после печати делать? Вызов exit() сразу после удаления любого вывода? Кроме того, вы должны только называть 'fclose (ptr);' когда вы успешно открываете файл и выполняете его. – jschultz410
Этот код выглядит странно. Похоже, вы должны передать ему файл с именем «input.txt» от текущего директора, из которого вы выполняете, или он не сработает. Когда он терпит неудачу, он печатает сообщение об ошибке с ncurses, но существует и, вероятно, очищает окно с помощью 'endwin'. – lurker
'Любопытно, что вы проверяете, что пользователь указывает 'file.txt', но вы открываете' input.txt'. Это не удается - в каталоге 'bin' нет' input.txt'. Даже если вы очистите его, чтобы открыть 'argv [1]' вместо фиксированного имени, вы должны указать '../ assets/file.txt', если вы запустите программу в каталоге' bin'. –