【发布时间】:2016-05-04 09:21:28
【问题描述】:
您好,我正在编写一个程序来执行来自文本文件的命令。下面的代码用于先将一行一行的存入char数组中。
所以我希望它做类似的事情
args[0]= The first line of text file
args[1]= The second line of text file
... and so on
在我的代码中,所有数组都将被最后一个数组覆盖。我不知道为什么。
谁能帮我解决这个问题并告诉我为什么我的代码会这样。我还需要保留 char *args[]。因为我稍后会在 execvp() 中使用它。
int main(int argc, const char * av[]) {
FILE *fp;
fp = fopen(av[1],"r");
int n_lines=0;
char in[100],*args[16];
int size=sizeof(in);
while(fgets(in, size, fp)!=NULL){
args[n_lines] = in;
printf("Args[0] is %s\n",args[0]);
n_lines++;
}
printf("Now Args[0] is %s\n",args[0]);
}
输出
zacks-MacBook-Pro:prac2 zack$ ./a.out test
Args[0] is ./addone
Args[0] is ./add
Now Args[0] is ./add
【问题讨论】:
-
独立于你的问题:你知道如果你的文件超过 16 行你会遇到问题。
-
独立于您的问题,您应该检查文件是否存在并在读取内容时关闭文件指针...
标签: c arrays pointers char system