我开始研究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 %dn", token, LEN(Rx) - 1); }
strcpy
在遇到NULL时停止, memcpy
不会。 所以,如果你的数组有0x00
例如。