这如何读取文件?

时间:2014-01-15 19:59:19

标签: c pointers file-io

我一直在试图弄清楚这段代码在文件中的读取方式。我一直试图让它工作,但它每次都崩溃。有人可以解释这应该如何读取文件。?

#include <stdio.h>

main(argc,argv)
   int argc;
   char **argv;
{
    FILE    *fo1, *fo2,*fp1, *fopen();
    char    *foobar;

    argc--; argv++;      
    foobar = *argv;
    fp1=fopen(foobar,"rb");

    argc--; argv++;     
    foobar = *argv;
    fo1=fopen(foobar,"wb");

    argc--; argv++;
    foobar = *argv;   
    fo2=fopen(foobar,"wb");

程序在第三个“argv ++”崩溃。我假设argv应该为fp1获取我想要读入的文件的地址,然后它是内存中创建另外两个文件的位置(fo1,fo2)但是在argv的第一次增量之后它变为null并且没有任何反应

1 个答案:

答案 0 :(得分:2)

argv是一个指向包含命令行参数的数组的指针。 argv[0]是指向包含程序文件名的字符串的指针; argv[1]指向一个包含第一个命令行参数的字符串;等

argc告诉你有多少个参数(包括程序的名称)。因此,在假设传入了多少参数之前,正确的代码应该检查这一点。如果您将argv索引到最后一个参数之外的一个元素,那么您将获得NULL。将其编入索引之外是未定义的行为(您正在读取超出数组末尾的行为)。