检测终端尺寸,如果未满足标准则显示错误

时间:2016-03-25 16:44:59

标签: c debugging

这个程序并没有完全完成,但我一步一个脚印。现在我正在尝试让程序打开一个文件,检测终端大小(行和列),并在输入文件时显示一条消息。

我已将fp设置为读取模式,如果没有指定文件,我有一条错误消息,我已经设置了我的if语句,如果列大小小于80,则显示错误,如果行大小小于20则显示一个错误...我认为这是我的问题出现的地方,在这个项目之前,我从未实际使用过终端大小。

所以我的问题是:如果没有达到调整标准,我怎么能让程序显示错误?

注意:就像我说的那样,我知道代码现在不是100%我只是想在路上做一些调试,这样我最终可以得到一个更大的工作项目。

无论如何,这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>

int main(int argc, char **argv)
{
    struct winsize terminal;
    FILE *fp;
    int c;

    ioctl (0, TIOCGWINSZ, &terminal, argv[2]);

    fp              = fopen(argv[1], "r");    //set open for argv[1] and set it to read mode
    column          = terminal.ws_col;
    row             = terminal.ws_row;

    if (fp          == NULL)
    {
            fprintf(stderr, "Error opening '%s'.\n", argv[1]);                              //if not file is specified then close program and give an error
            exit(1);
    }
    c               = fgetc(fp);                                                            //set c to fgetc

    if column < 80 || row < 20)                                                               //if temrinal window is less than 80x20, display an error and exit
    {
            printf("Terminal window must be atleast 80x20!\n");                           //display error and close program if column criteria isn't met
            exit(1);
    }

    while(!feof(fp))                                                                        //if file is entered, display a test message (this is where later on I will show hex value)

    {
            printf("Good Job! You picked a file to manipulate!!\n");
            exit(1);
    }
    fclose(fp);                                                                             //close fp


    return 0;
  }

0 个答案:

没有答案