1

argv[x]変数が指す構造体に代入しようとしています。私は次のコードを書き、メモリ違反であることがわかっているセグメンテーション違反を取得しました。どこを間違えたのか分かりません。コードは次のとおりです。

#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;
} 

前もって感謝します。

4

1 に答える 1