定义指针数组 char *a[10],每个指针指向一块10个char 大小的内存,用scanf 为每块内存输入字符串

定义指针数组 char *a[10],每个指针指向一块10个char 大小的内存,用scanf 为每块内存输入字符串(不超过10个字符),并打印所输入.
请把主要的步骤详细解释下,加分的哦

楼上都有问题,他们都没有真正输入100个字符。刚写了一个,已经通过测试,没发现问题

#include <stdio.h>
#include <stdlib.h>
int main()
{
char *a[10]; //定义指针数组
for(int i=0;i<10;i++)
{
*(a+i) = (char *)malloc(sizeof(char)*10); //*(a+i)表示指针数组的第i个元素,也可以写 成a[i]
for(int j=0;j<10;j++)
{
scanf(" %c",*(a+i)+j); //读取字符,记得%c前面有一个空格。*(a+i)+j表示指针数组第i个元素(就是一个char* ,长度为10)的第j个成员的地址
//printf("%c\n",*(*(a+i)+j)); //用来调试的,可以查看刚刚输入的字符
}
}
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
{
printf("%c\n",*(*(a+i)+j)); //按照你的要求逐个打印字符
}
return 0;
}追问

你用malloc不free吗

追答

你如果需要free自己加个free不就完了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-17
前提 a[10] 已经分配内存.

new 或者 malloc出来的.

for(int i=0;i<10;i++)//10次循环
{
scanf("%s",a[i]); //接收键盘输入

}

for(int i=0;i<10;i++)
{
printf("%s\n",a[i]); //打印
}本回答被网友采纳