在C中为char数组赋一个char指针

我开始研究C,我已经遇到了一些问题。 我想解析一个文件并将每行的结果存储在一个结构中。 我的结构看起来像:

struct record { char x[100]; } 

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

 struct record R; ... char *token; token = strtok(line, "\t"); 

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

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

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

要解决您的问题,请使用

 strcpy(Rx,token); 

代替

 Rx = token; 

确保字符串适合数组后使用strcpy

 #define LEN(array) (sizeof (array) / sizeof (array)[0]) if (strlen(token) < LEN(Rx)) { strcpy(Rx, token); } else { fprintf(stderr, "error: input string \"%s\" is longer than maximum %d\n", token, LEN(Rx) - 1); } 

strcpy在遇到NULL时停止, memcpy不会。 所以,如果你的数组有0x00例如。 \0在中间,你应该使用memcpy而不是strcpy