读书人

一维指针字符数组函数调用有关问题

发布时间: 2013-01-04 10:04:16 作者: rapoo

一维指针字符数组函数调用问题
本帖最后由 littleplayer 于 2012-12-01 01:32:18 编辑


#include <stdio.h>
/*require:用一维指针数组读入字符串,输出如下
输入
abcd efh ijkl
输出:
abcd
efh
ijkl

*/
void readArr(char *p[]);
int main(){
char a0[10]="";
char a1[10]="";
char a2[10]="";
char *pa[3]={a0,a1,a2};
readArr(pa);
puts(pa[0]);
puts(pa[1]);
puts(pa[2]);
return 0;

}
void readArr(char *p[]){
char temp = getchar();
int i=0; //控制指针数组下标
while(temp!='\n'){ //遇到回车结束输入
while(temp!=' '&&temp!='\n'){
//回车空格结束一个字符串的录入,进入下一个字符串录入,或者结束
*p[i]++=temp; //?是这儿的问题,但我似乎对这块很晕 ,求对指针数据进行一个形象的解释,貌似没有修改到指针指向的字符
temp = getchar();

}
if(temp!='\n'){ //过滤掉空格
temp = getchar();
i++; //数组下标紫加
}
}
}


[解决办法]
void readArr(char *p[]);
int main()
{
char a0[10] = "";
char a1[10] = "";
char a2[10] = "";
char *pa[3] = { a0, a1, a2 };

readArr(pa);

puts(pa[0]);
puts(pa[1]);
puts(pa[2]);

getchar();

return 0;
}
void readArr(char *p[])
{
char temp = getchar();
int i = 0, j = 0;
while (temp != '\n')
{
p[i][j++] = temp;
temp = getchar();

if (temp == ' ')
{
p[i][j] = 0x0;
temp = getchar();
i++;
j = 0;

if (i >= 3) break;
}
}
}

读书人网 >C++ Builder

热点推荐