假设我有以下c代码:
char some_string[50];
char* string_array[10];
如何将string的值复制到string_array的一个元素中?
我试过了:
strcpy(string_array[0], some_string);
但我收到一个总线错误10。
最终目标是拥有一个char * args [],我可以像这样传入execvp:
execvp(args[0], args);
答案 0 :(得分:-1)
这很简单,只需编写 string_array [0] = some_string; 并在execvp调用中传递string_array [0]。
你不能使用strcpy,因为string_array的所有元素都是NULL(即没有指向某些可变内存或者可能包含一些垃圾值)。这就是为什么你得到总线错误(访问无效地址)。
您还可以分配动态内存,如: string_array [0] = malloc(50); ,然后使用strcpy但请记住在调用malloc()之前包含stdlib.h。
您可以通过以下方式获得更好的理解: http://ee.hawaii.edu/~tep/EE160/Book/chap9/section2.1.4.html