- 论坛徽章:
- 3
|
原帖由 mcmay 于 2008-11-11 23:15 发表 ![]()
char names[NAM][LEN];
names[j] = retinput(); /*报错说这里的赋值类型不匹配*/
names[j]是names是二维数组的成员,不是指针。retinput()返回char *指针,不能直接赋值。
即使names[j]是指针,也有4楼说的变量生存周期的问题:
你返回一个局部数组变量的指针是有严重问题的(该数组在函数返回后就不存在了)
我想你应该把names[j]作为retinput的参数传进去
void retinput(char *buf)
- char * retinput(char * buf, int size); //修改函数原型
- int main(void)
- {
- ...
- for(j = 0; j < NAM; j++){
- retinput((char *)&names[j], LEN); /*修改*/
-
- puts(names[j]);
- }
- ..
- }
- char * retinput(char *buf, int size) //修改
- {
- char * pname = buf;
- ...
- }
复制代码
或者用静态变量
- char * retinput(void);
- int main(void)
- {
- ...
- for(j = 0; j < NAM; j++){
- strcpy((char *)&names[j], retinput()); /*修改*/
-
- puts(names[j]);
- }
- ...
- }
- char * retinput(void)
- {
- static char nameinput[LEN]; //静态变量
- ...
- }
复制代码 |
|