我一直在尝试将argv[x]
分配给变量指向的结构。
我编写了以下代码并获得了Segmentation故障,我知道这是一个内存违规。我不明白我犯了什么错误。
这是代码:
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
typedef struct somestruct {
char name[20];
char surname[20];
char misc[4056];
} somestruct;
int
main(int argc, char *argv[])
{
somestruct *pvar;
pvar = malloc(sizeof(somestruct));
if (pvar==NULL)
printf("malloc failed with: %s\n", strerror(errno));
pvar = (somestruct *) memset(pvar, 0, sizeof(somestruct));
memcpy((char *) &(pvar->name), argv[1], 20);
memcpy((char *) &(pvar->surname), argv[2], 20);
memcpy((char *) &(pvar->misc), argv[3],4056);
return 0;
}
提前谢谢。
答案 0 :(得分:5)
更正您的代码,在memcpy中删除&
:
memcpy((char *) (pvar->name), argv[1], 20);
memcpy((char *) (pvar->surname), argv[2], 20);
memcpy((char *) (pvar->misc), argv[3],4056);
此外,您正在应对pvar
的{{1}}。 memccpy的语法是:
argv
数组void *memcpy( void *to, const void *from, size_t count );
到数组count
的{{1}}个字符。
所以
from
的长度,但不是 20,20,4056,to
。 喜欢:
argv[i]