C语言 函数 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("%sn",argv[1+i]);
}
printf("0: %s 1: %s 2: %s 3: %s 4: %sn",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 filen");
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);
}
}
}

你不应该改变内容,或者 argv argv 是一个指针的连续数组。

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

而不是使用 argv,你应该通过 malloc 使用指针实现数组。请阅读指针实现的动态数组,这将解决您的问题。

最新更新