gpt4 book ai didi

需要 C 结构解引用左值

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:05 25 4
gpt4 key购买 nike

我目前正在用 borland C 编写代码,但遇到了结构取消引用的问题。 当前->值= x;给出了一个 Lvalue required 错误。当“value”为 char 时,不会发生这种情况。有没有办法将 x 的值赋给 current->value?

#include<stdio.h>
#include<conio.h>

char x[16];
FILE *fin;

struct node {
char value[16];
struct node *next,*prev;
};
struct node *current;

void main(){
fin = fopen("tokens.ctr","r");
current = (struct node*) malloc(sizeof(struct node));
fscanf(fin,"%s",&x);
current->value = x;
}

最佳答案

简而言之,因为 c 不允许您那样复制数组。您必须复制数组的每个元素,使用循环或使用 memcpystrcpy

顺便说一下,

  • 没有理由像这样在文件范围内声明 x 和 fin。您应该尽量减少变量的范围。
  • main 必须返回 int,而不是 void
  • 不要强制转换 malloc 的返回值。它返回一个可以分配给任何其他指针类型的 void *
  • 如果任何标记为 16 个或更多字符,您的 fscanf 调用可能会出现未定义的行为

关于需要 C 结构解引用左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25641494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com