C 将字符串从二维数组复制到一维数组

C 将字符串从二维数组复制到一维数组,c,arrays,C,Arrays,我在处理C语言中的指针时遇到了一些问题 我的代码从文本文件加载一个大字符串 1378251369.691375 84:1b:5e:a8:bf:7f 68:94:23:4b:e8:35 100 1378251374.195670 00:8e:f2:c0:13:cc 00:11:d9:20:aa:4e 397 1378251374.205047 00:8e:f2:c0:13:cc 00:11:d9:20:aa:4e 397 1378251374.551604

我在处理C语言中的指针时遇到了一些问题

我的代码从文本文件加载一个大字符串

1378251369.691375   84:1b:5e:a8:bf:7f   68:94:23:4b:e8:35   100
1378251374.195670   00:8e:f2:c0:13:cc   00:11:d9:20:aa:4e   397
1378251374.205047   00:8e:f2:c0:13:cc   00:11:d9:20:aa:4e   397
1378251374.551604   00:8e:f2:c0:13:cc   00:11:d9:20:aa:4e   157
1378251375.551618   84:1b:5e:a8:bf:7c   cc:3a:61:df:4b:61   37
然后将每一行复制到一个数组fullinfo[200][BUFSIZ]

然后我尝试评估最后两条信息,并将它们放入自己的数组中 e、 g

为此,我尝试了strcpy和memcpy

     fullinfo[200][BUFSIZ];
     char cutline[BUFSIZ];
     char cut2line[BUFSIZ];

      while( fgets(line, sizeof line, pi) != NULL)  {

            strcpy(fullinfo[infoline], line);

             strcpy(cutline,fullinfo[infoline]);
             memcpy(cut2line,*cutline[25],100);
             printf("%s",cutline);      
             infoline ++;

    }
两者都给出了

invalid type of argument of unary '*' (have 'int')
或者涉及错误的指针类型

感谢您的帮助

编辑到clarrify:cutline包含输入文件中的整行,这是正确的,但是当我尝试将该行的第二部分复制到它自己的数组中时,我在这里得到了一些错误

while( fgets(line, sizeof line, pi) != NULL)  {

        strcpy(fullinfo[infoline], line);

         strcpy(cutline,fullinfo[infoline]);
         //memcpy(cut2line,*cutline[25],100); This line is what's causing your issue I think.
         memcpy(cut2line,&cutline[25],100); //Use an & 
         printf("%s",cutline);      
         infoline ++;

}
char cut2line[BUFSIZ];
这意味着声明和定义字符数组,即单个字符数组。我认为您需要一个指向字符串的指针数组,即

char *cut2line[200]; //not sure if the size is right here.
接下来,因为这只是一个指针数组,所以必须分配指针实际指向的对象。您可以使用malloc甚至strdup,它在封面下进行malloc

或者您可以使用堆栈分配的2D字符数组,因为您可能知道字符串的长度和字符串的数量

*运算符取消引用切割线[25]处的内容,因此需要一个指针。我很确定那不是你想要的。如果您使用上述建议,cutline[n]将为您提供所需的指针


说到这里,我认为c语言并不是一种简单的语言,它不能很快地组合一些东西来处理像这样的字符串,c语言是我用来编程的。我更喜欢脚本语言,可能是python、perl、tcl或ruby,无论您最熟悉的是什么。事实上,bashshell脚本可能也会更好。使用脚本语言,您根本不需要担心指针、解引用和alloc之类的问题。在c中这样做的唯一原因是性能,也就是说,您的输入文件非常庞大。

您希望使用符号和从数组元素生成指针。不是star。它现在编译,但它不像我预期的那样复制,使用[25]它会从第25个元素开始复制吗?如果我没记错的话,告诉它[25]你是在告诉它你只想要第26个元素,而不是从第26个元素开始。如果要从该元素复制,可能需要使用memcpy以外的其他元素,例如strcpyrember,[0]是第一个元素,因此[25]是第26个元素。
char *cut2line[200]; //not sure if the size is right here.