几点:
int main(int argc, char* argv[]) {
我建议您在继续之前检查此处的参数数量
setup_screen();
setup();
// File input
char textExtracted[250];
可以连接声明,但始终检查 I/O 的返回值
FILE* file_handle = = fopen(argv[1], "r");
if (NULL == file_handle)
{
perror(argv[1]);
return EXIT_FAILURE;
}
下面不是从文件中读取的正确方法,相反,您应该
首先尝试从文件中读取,然后检查读取的错误/eof/enuff 字节
// while(fgets(textExtracted,sizeof(textExtracted), 1, file_handle) > 0) {}
while(!feof(file_handle)){
fgets(textExtracted, 150, file_handle);
}
看起来您认为 fgets 在调用时会附加到 textExtracted
多次了,还是不行!文件中的每一行都会覆盖先前读取的行。另请注意,缓冲区中包含 \n 字符。
但由于您的文件看起来很小,您可以阅读整个文件
内容到你的缓冲区并使用它。
// int size = fread(textExtracted, sizeof(textExtracted), 1, file_handle);
更好的方法是首先检查文件的大小,然后使用 malloc 分配一个缓冲区来保存整个文件或逐个字符地读取文件并执行您需要执行的任何命令。例如switch 语句作为状态机非常出色
switch( myreadchar )
{
case 'A':
break;
case 'B':
break;
...
}
textExtracted[0] 是一个字符,textExtracted 是整个数组,所以而不是
printf("%s", textExtracted[0]);
write
printf("%s", textExtracted);
甚至更好
fputs(textExtracted, stdout);
return 0;