我期待命令行中的名字,我需要将它们保存在一个数组中 . 我试过的多种方法都不起作用(我正在使用strcpy)而且我得到以下valgrind错误:
Use of uninitialised value of size 8
==23027== at 0x4C2E1E0: strcpy (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23027== by 0x400F90: main (pt-cruisers.c:52)
==23027==
==23027== Invalid write of size 1
==23027== at 0x4C2E1E0: strcpy (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==23027== by 0x400F90: main (pt-cruisers.c:52)
==23027== Address 0x0 is not stack'd, malloc'd or (recently) free'd
这是代码片段:
char *racern[argc][20];
Racer *racers[argc];
pthread_t threads[argc];
int rc;
void *returnv;
for(int i = 1; i < argc; i++){
strcpy(racern[i-1], argv[i]); <-line 52
}
我知道名字的长度不会超过20个字符 . 我用argc知道命令行中会有多少名字 . 我假设我没有提供足够的内存,但即使我给了大量的任意数量并且测试了3个名字,我仍然遇到了同样的问题 . 任何帮助表示赞赏!
1 回答
我想你要改变:从:
char *racern[argc][20];
到:char racern[argc][20];