使用char指针将文本文件中的一行一行的内容存储到char数组中

扎克·陈

您好,我编写了一个程序来执行文本文件中的命令。下面的代码用于首先将一行一行地存储到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
大卫·拉涅利(David Ranieri)
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++;
}

in每次迭代都会覆盖的值,您需要保留空间(使用malloc->strcpy或,strdup如果可用):

char in[100], *args[16];

while (fgets(in, sizeof in, fp) != NULL) {
    args[n_lines] = strdup(in);
    ...
    n_lines++;
}

或使用2D数组(sizeof需要在中进行调整fgets):

char in[16][100];

while (fgets(in[n_lines], sizeof in[0], fp) != NULL) {
    ...
    n_lines++;
}

就像@MichaelWalz在评论中指出的那样:如果文件多于16行,则会遇到问题。

改成

while (fgets(in[n_lines], sizeof in[0], fp) != NULL) {
    ...
    if (++n_lines == (sizeof in / sizeof in[0])) break;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将文本文件的每一行存储到一个数组中并删除\n

来自分类Dev

将文本文件中的每一行放入数组C#中

来自分类Dev

程序仅将一行输入到文本文件中

来自分类Dev

将文本文件中的一行拆分为两个单独的数组

来自分类Dev

将文本文件扫描到数组中并省略指定的一行

来自分类Dev

删除文本文件中的最后一行

来自分类Dev

从文本文件中的一行删除单词

来自分类Dev

如何从文本文件中删除一行?

来自分类Dev

c ++如何从文本文件中将一行分成两行,然后分别存储到两个不同的数组中?

来自分类Dev

在SSIS中打开文本文件,并将第一行存储在变量中

来自分类Dev

如何使用sed / awk将某一行之后的文件中的所有文本替换为另一个文本文件的内容?

来自分类Dev

使用feof将单词从文本文件存储到char数组中

来自分类Dev

显示文本文件中除最后一行之外的所有内容

来自分类Dev

在scala中读取文本文件,一行接一行,未迭代

来自分类Dev

将文本文件中的一行移到文本文件中的另一行之前的最快方法?

来自分类Dev

修剪文本文件中的每一行,然后将结果保存到数组中

来自分类Dev

使用sed在文本文件的另一行之前输入文本文件中的文本

来自分类Dev

读取一行存储的字典文本文件

来自分类Dev

读取一行存储的字典文本文件

来自分类Dev

如何在c#中从一行删除到文本文件的末尾?

来自分类Dev

将包含特定字符串的文本文件中的每一行复制到新文本文件的程序

来自分类Dev

jTextArea使用BufferedReader仅将文本的第一行保存在文本文件中吗?

来自分类Dev

使用sed从Windows中的文本文件中删除第一行

来自分类Dev

使用sed从Windows中的文本文件中删除第一行

来自分类Dev

解析文本文件,以便将每一行存储为一个数组值

来自分类Dev

将文本文件中的报价附加到每一行

来自分类Dev

将输出数据保存到文本文件中(每行单独一行)

来自分类Dev

使用php文件功能修剪文本文件中的每一行

来自分类Dev

BASH-使用awk将前缀(文件路径)添加到文本文件中的每一行

Related 相关文章

  1. 1

    将文本文件的每一行存储到一个数组中并删除\n

  2. 2

    将文本文件中的每一行放入数组C#中

  3. 3

    程序仅将一行输入到文本文件中

  4. 4

    将文本文件中的一行拆分为两个单独的数组

  5. 5

    将文本文件扫描到数组中并省略指定的一行

  6. 6

    删除文本文件中的最后一行

  7. 7

    从文本文件中的一行删除单词

  8. 8

    如何从文本文件中删除一行?

  9. 9

    c ++如何从文本文件中将一行分成两行,然后分别存储到两个不同的数组中?

  10. 10

    在SSIS中打开文本文件,并将第一行存储在变量中

  11. 11

    如何使用sed / awk将某一行之后的文件中的所有文本替换为另一个文本文件的内容?

  12. 12

    使用feof将单词从文本文件存储到char数组中

  13. 13

    显示文本文件中除最后一行之外的所有内容

  14. 14

    在scala中读取文本文件,一行接一行,未迭代

  15. 15

    将文本文件中的一行移到文本文件中的另一行之前的最快方法?

  16. 16

    修剪文本文件中的每一行,然后将结果保存到数组中

  17. 17

    使用sed在文本文件的另一行之前输入文本文件中的文本

  18. 18

    读取一行存储的字典文本文件

  19. 19

    读取一行存储的字典文本文件

  20. 20

    如何在c#中从一行删除到文本文件的末尾?

  21. 21

    将包含特定字符串的文本文件中的每一行复制到新文本文件的程序

  22. 22

    jTextArea使用BufferedReader仅将文本的第一行保存在文本文件中吗?

  23. 23

    使用sed从Windows中的文本文件中删除第一行

  24. 24

    使用sed从Windows中的文本文件中删除第一行

  25. 25

    解析文本文件,以便将每一行存储为一个数组值

  26. 26

    将文本文件中的报价附加到每一行

  27. 27

    将输出数据保存到文本文件中(每行单独一行)

  28. 28

    使用php文件功能修剪文本文件中的每一行

  29. 29

    BASH-使用awk将前缀(文件路径)添加到文本文件中的每一行

热门标签

归档