w********g 发帖数: 106 | 1 knowledge题和coding都很常见,就不说了。
但是有个题我不知道考点是什么:
已给出全局变量
struct val {
char *s;
};
struct val input[100];//已事先存好100个val
struct val output[100];//已事先存好100个val,但都是任意赋值
char buffer[足够大];
要求写两个函数
InputToBuffer(void *buffer, struct val input)
BufferToOutput(struct val output, void *buffer)
第一个函数把input放到buffer里,第二个函数反之。
要求把两个函数依次执行完之后,input和output相等。
题目虽然稍微有些繁琐,但是其实意思很明确。
原题特意说过不必考虑内存不够用、字符串与结构体不valid的情况。
我不明白这题考点是什么,谁给我讲讲?
我的做法就是定义一个char *b = (char *)buffer,
然后两个函数里分别
memcpy(b, input[i], size+1)
memcpy(output[i], b, size+1),
还要注意空字符串的情况。
除了这些还有什么考点吗? |
c********p 发帖数: 1969 | |
Z**a 发帖数: 2243 | 3 bless
【在 w********g 的大作中提到】 : knowledge题和coding都很常见,就不说了。 : 但是有个题我不知道考点是什么: : 已给出全局变量 : struct val { : char *s; : }; : struct val input[100];//已事先存好100个val : struct val output[100];//已事先存好100个val,但都是任意赋值 : char buffer[足够大]; : 要求写两个函数
|
p****e 发帖数: 3548 | 4 用什么做delimiter....
output的你分配了内存了么
想想其实就是考你文件系统设计
把buffer考虑成磁盘
【在 w********g 的大作中提到】 : knowledge题和coding都很常见,就不说了。 : 但是有个题我不知道考点是什么: : 已给出全局变量 : struct val { : char *s; : }; : struct val input[100];//已事先存好100个val : struct val output[100];//已事先存好100个val,但都是任意赋值 : char buffer[足够大]; : 要求写两个函数
|
w********g 发帖数: 106 | 5 都考虑了。
input.size是已知的,所以不必考虑delimiter。
output已事先分配好了。
buffer是事先给定的char数组,必须往这里buffer。
【在 p****e 的大作中提到】 : 用什么做delimiter.... : output的你分配了内存了么 : 想想其实就是考你文件系统设计 : 把buffer考虑成磁盘
|
p****e 发帖数: 3548 | 6 val的char *s的大小是不定的,你怎么确定大小。。。
【在 w********g 的大作中提到】 : 都考虑了。 : input.size是已知的,所以不必考虑delimiter。 : output已事先分配好了。 : buffer是事先给定的char数组,必须往这里buffer。
|
w********g 发帖数: 106 | 7 assume字符串都是valid的,就是说string都是以\0结尾。
【在 p****e 的大作中提到】 : val的char *s的大小是不定的,你怎么确定大小。。。
|
p****e 发帖数: 3548 | 8 那效率就成问题了, 你要先扫描才能读出来
【在 w********g 的大作中提到】 : assume字符串都是valid的,就是说string都是以\0结尾。
|
w********g 发帖数: 106 | 9 你说的“扫描”是什么意思?while循环找\0?
我觉得具体实现的时候,无论如何必须要strlen()才能知道长度,然后memcpy()。
所以不管怎么做,效率都是线性的吧?
【在 p****e 的大作中提到】 : 那效率就成问题了, 你要先扫描才能读出来
|