我的问题是:如何从字符串中复制字符指向结构的字符成员。我的内存访问违规错误。
以下是我的代码片段。有谁知道这样做的正确方法?提前谢谢。
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 {
答案 0 :(得分:0)
strcpy(myInfo->id, *tmp);
肯定是错的,myInfo->id = *tmp;
应该有用(只要tmp
是char*
类型),除非myInfo
或tmp
点在糟糕的信息。这里的代码还不够确定,但我的猜测是myInfo
未正确初始化。也许是NULL
。
在调试器中运行程序可能会有所帮助(如果使用-g
来获取更好的信息,可以使用gcc
进行编译)以查看它确实失败的位置并检查指针的值
答案 1 :(得分:0)
myInfo的类型为struct machine_info,它不是指针。要访问成员,您可以使用点运算符。 myInfo.id = * tmp;如果tmp是字符指针,那么它将起作用