搜索文件中函数main()的参数

时间:2018-01-18 13:03:36

标签: c variables search main

我编写了一些代码,用于搜索给定文本文件中的字符串。如果没有给出任何参数,你会收到信息,它会返回一个你应该给出至少一个参数的信息。如果你只为程序提供一个字符串的参数,你必须写下你要搜索的文件数。下一步是为这些文件提供路径。问题是当你写多个时。仅搜索最后一个路径。第一个循环指示路径分配良好但是循环后的printf显示某些路径出错。我应该在这段代码中改变什么? 代码在下面添加。 对于任何帮助,非常感谢。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]){
    if(argc==1){
        printf("No arguments given"); 
        return -1;   
    }else if(argc==2){
        int i=1,path_quantity=0;
        while(path_quantity==0){
        printf("How many path will you given:\n");
        scanf("%d",&path_quantity);
        }
        char path[30];
        int c;
        for(i;i<=path_quantity;i++){
            printf("Give path numver %d:\n",i);
            scanf("%30s",wyraz);
            fflush(stdin);
            argv[1+i]=path;
            printf("%s\n",argv[1+i]);

        }
        printf("0: %s 1: %s 2: %s 3: %s 4: %s\n",argv[0],argv[1],argv[2],argv[3],argv[4]);

        int j;
        for (j=2; j<path_quantity+2; j++){
        FILE *f= fopen(argv[j], "r");
        if(!f) {
            perror("Can't open file\n");
            return EXIT_FAILURE;
        }
        char *line = NULL;
        size_t len = 0;
        ssize_t nread;
        while ((nread = getline(&line, &len, f)) != -1) {
            char *occur = strstr(line, argv[1]);
            if(occur != 0){         
                printf("%s", line);
            }
        }
        fclose(f);
        }
    }
}

2 个答案:

答案 0 :(得分:-1)

你不应该更改内容或argv argv是一个指针数组。

答案 1 :(得分:-1)

for(i;i<=path_quantity;i++){ printf("Give path numver %d:\n",i); scanf("%30s",wyraz); fflush(stdin); argv[1+i]=path; printf("%s\n",argv[1+i]); }

不要使用argv,而应该使用指针实现的数组,通过malloc.please读取有关将解决问题的指针实现的动态数组。