C-一个程序,该程序采用一个命令行参数并将文件的内容输出到标准



i被分配了一个程序来编写使用文件系统调用来获取命令行参数(假设您通过文本文件地址传递)并返回所述文件的内容。到目前为止,我已经有了这个代码,但似乎无法弄清楚为什么我的编译器在识别文本文件作为参数以及打印从文件中收到的信息而给我错误的原因。非常感谢任何类型的帮助/帮助。

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>

int main(int argc, char *argv[]){


int FP;
ssize_t bytes;
char buffer [100];
if(argc == 1){
FP = open(argv[1], O_RDONLY);
printf("Program name is : %s", argv[0])
bytes = read(FP, buffer,sizeof(buffer) -1);
printf("%s", bytes);
close(FP);
}



return 0;

}

以下提出的代码:

  1. 将评论纳入问题
  2. 实现所需功能
  3. 正确检查错误
  4. 记录为什么包含标头文件。通常,如果您不能说明为什么包含标头文件,则不包括它。(然后,编译器将告诉您是否真的需要该标头文件,以及为什么
  5. 编译时始终启用警告,然后修复这些警告。(对于gcc,最少使用:-Wall -Wextra -pedantic -Wconversion -std=gnu11

现在,提出的代码。

#include <stdio.h>   // fopen(), perror(), fgets(), fprintf(), printf(), FILE
#include <stdlib.h>  // exit(), EXIT_FAILURE

#define MAX_INPUT_LEN 100
int main(int argc, char *argv[])
{
    FILE *fp;
    char buffer [ MAX_INPUT_LEN ];
    if(argc != 2)
    {
        fprintf( stderr, "USAGE: %s fileNamen", argv[0] );
        exit( EXIT_FAILURE );
    }
    // implied else, correct number of command line parameters
    printf( "Program name is : %s", argv[0] );
    printf( "file to read: %sn", argv[1] );
    fp = fopen( argv[1], "r" );
    if( NULL == fp )
    {
        perror( "fopen failed" );
        exit( EXIT_FAILURE );
    }
    // implied else, fopen successful
    while( NULL != fgets( buffer, sizeof buffer, fp ) )
    {
        printf( "%s", buffer );
    }
    fclose( fp );
    return 0;
}

相关内容

  • 没有找到相关文章

最新更新