【发布时间】:2015-03-29 00:03:17
【问题描述】:
我有一个结构数组,每个结构都有一个 char 数组和一个 int。
typedef struct {
int id; //Each struct has an id
char input[80]; //Each struct has a char array
} inpstruct;
inpstruct history[10]; //Array of structs is created
我有另一个包含用户输入的 char 数组
char inputBuffer[80];
用户输入一个单词,后跟\n 字符。例如,inputBuffer 将包含 3 个字符:'l''s''\n'。
我想将inputBuffer中的所有字符复制到history[index].input中
我尝试过使用:
strcpy(history[index].input, inputBuffer);
但由于inputBuffer 不是空终止的,它不起作用。如何将inputBuffer 中的所有字符复制到history[index].input 中?
【问题讨论】:
-
length = read(STDIN_FILENO, inputBuffer, 80); -
定义
it does not work -
strcpy是,你猜对了,用于 c 风格的 0 终止字符串。你想复制原始内存,因此使用memcpy。 -
使用
memcpy(history[index].input, inputBuffer, sizeof inputBuffer);我得到错误'memcpy'调用对'char'类型的对象进行操作,而大小基于不同的'char *'类型 -
似乎您没有将数组传递给
sizeof,而是一个指向其内容的指针。可能是由于函数调用中的数组衰减?