访问冲突,使用指针指向的字符分配结构的元素

时间:2014-11-21 05:19:25

标签: c

我的问题是:如何从字符串中复制字符指向结构的字符成员。我的内存访问违规错误。

以下是我的代码片段。有谁知道这样做的正确方法?提前谢谢。

struct machine_info {
  char id;
  int port;
} myInfo;


//part of a function
while(fgets(line, MAX_LINE, fh)!= NULL) {
    if(count ==0) {
      tmp = line;
      while(*tmp==' ')
        tmp++;

//myInfo->id=*tmp didn't work, so I tried to use strcpy, still didn't work
  strcpy(myInfo->id, *tmp); 
 // myInfo->id = *tmp;
} else if(count==1) {
  tmp = line;
  while(*tmp==' ')
    tmp++;
  end = tmp;
  while(*end != ' ')
    end++;
  *end = '\0';
  myInfo->port = atoi(tmp);  
  //
} else {

2 个答案:

答案 0 :(得分:0)

strcpy(myInfo->id, *tmp);肯定是错的,myInfo->id = *tmp;应该有用(只要tmpchar*类型),除非myInfotmp点在糟糕的信息。这里的代码还不够确定,但我的猜测是myInfo未正确初始化。也许是NULL

在调试器中运行程序可能会有所帮助(如果使用-g来获取更好的信息,可以使用gcc进行编译)以查看它确实失败的位置并检查指针的值

答案 1 :(得分:0)

myInfo的类型为struct machine_info,它不是指针。要访问成员,您可以使用点运算符。 myInfo.id = * tmp;如果tmp是字符指针,那么它将起作用