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

2025-02-27 17:58:39
推荐回答(2个)
回答1:

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

#include
#include
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;
}

回答2:

前提 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]); //打印
}