所以我有一个名为temp
的目录temp
它包含:
assets bin src include Makefile
assets目录包含一个“file.txt”文件,其中包含一些键盘字母字符。
我的src文件夹还包含文件“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
然而,在成功编译之后,进入bin目录并键入./runMe file.txt
最终在屏幕上不打印任何新内容(不会打印文本文件中的字符“abc”(位于assets目录中) )。
出了什么问题?
答案 0 :(得分:0)
如果您正在bin目录中运行可执行文件,那么您正试图在bin目录中打开您的文件,而不是。
从temp运行文件,如./bin/runMe file.txt,其中fopen行读取" assets / file.txt"
您必须明确指定运行程序的位置以及文件所在的位置。
答案 1 :(得分:0)
您正在一次读取一个字符并在同一位置(0,0)打印这些字符。我假设您应该在窗口的0,0位置看到文件中的最后一个字符。为什么不使用printf?
[编辑] 打印字符时,请增加x位置。
int x= 0;
while( ( ch =fgetc(ptr) ) != EOF) {
mvprintw(x,0,"%c",ch);
x++;
}