繁体   English   中英

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

[英]Assigning a char pointer to char array in C

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

struct record {
    char x[100];
}

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

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

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

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

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

要解决您的问题,请使用

strcpy(R.x,token);

代替

R.x = token;

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

#define LEN(array) (sizeof (array) / sizeof (array)[0])

if (strlen(token) < LEN(R.x)) {
   strcpy(R.x, token);
} else {
   fprintf(stderr, "error: input string \"%s\" is longer than maximum %d\n", token, LEN(R.x) - 1);
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM