在 C 中将 char 指针分配给 char 数组

Sam*_*am 3 c arrays pointers strtok

我开始学习C,并且已经遇到了一些问题。我想解析一个文件并将每行的结果存储在一个结构中。我的结构如下:

struct record {
    char x[100];
}
Run Code Online (Sandbox Code Playgroud)

然后,每当我使用 strtok 解析某些 file.txt 中的一行时,

struct record R;
...
char *token;
token = strtok(line, "\t");
Run Code Online (Sandbox Code Playgroud)

token 返回一个指向字符串的指针,每当我打印它时,它都是正确的字符串。我想将令牌分配给 x,例如R.x = token,但收到错误“char x[100] 不可分配”。是否可以将此指针标记转换为实际的 char 数组,或者将结果存储到结构中的最佳方法是什么?

Spi*_*rix 5

错误说明了一切。数组是不可赋值的。您需要将每个字符一一复制,然后在末尾附加一个 NUL 终止符。

幸运的是,有一个函数可以为您完成此操作。函数的名称是strcpy,可以在string.h标题中找到。

要解决您的问题,请使用

strcpy(R.x,token);
Run Code Online (Sandbox Code Playgroud)

代替

R.x = token;
Run Code Online (Sandbox Code Playgroud)