String 如何在c中打印n个字符串? #包括 #包括 #包括 int main() { 字符*名称; INTA; name=(char*)malloc(sizeof(name)); printf(“姓名编号:”); scanf(“%d”和“&a”); int i; 对于(i=0;i

String 如何在c中打印n个字符串? #包括 #包括 #包括 int main() { 字符*名称; INTA; name=(char*)malloc(sizeof(name)); printf(“姓名编号:”); scanf(“%d”和“&a”); int i; 对于(i=0;i,string,pointers,for-loop,String,Pointers,For Loop,In name是一个char*,因此sizeof(name)是地址的大小。因此您没有分配足够的内存 只需分配更多内存: name=(char *)malloc(sizeof(name)); 除了错误的空间分配(由brokenfoot回答)之外,您将无法获得所需的结果,因为您在同一变量name中反复读取所有名称,然后将名称输入最后打印a次: name=(char *)malloc(sizeof(char)*20); //allocating 20 bytes for the block that

In

name是一个
char*
,因此
sizeof(name)
是地址的大小。因此您没有分配足够的内存

只需分配更多内存:

name=(char *)malloc(sizeof(name));

除了错误的空间分配(由brokenfoot回答)之外,您将无法获得所需的结果,因为您在同一变量
name
中反复读取所有名称,然后将名称输入最后打印
a
次:

name=(char *)malloc(sizeof(char)*20); //allocating 20 bytes for the block that name will point tor

for(i=0;i您需要一个名称数组。要实现您想要做的事情,您可以使用具有最大大小的静态数组,也可以像下面的程序中那样动态分配内存。
注意,您还应该测试malloc的返回值……以防万一

for(i=0;i<a;i++)
{
printf("Enter the names:")
scanf("%s",name[a]);
}

print("The entered names are: ");
for(i=0;i<a;i++)
{
printf("%s", name[a]);
}
#包括
#包括
#包括
int main()
{
字符**名称;
INTA;
printf(“姓名编号:”);
scanf(“%d”和“&a”);
int i;

如果(aI无法编辑问题,只需将粘贴复制到编辑器中。我告诉过你需要替换哪一行。他的应用程序在任何情况下都无法工作,因为他需要一个名称数组。其他方式,第二个循环将始终显示最后填写的名称。我希望输出如下->名称数量:3输入名称:Breakheart arivu stackoverflow输入名称are:Breaknheart arivu堆栈溢出,但输出应该是逐行的linename[a]如果我运行你的its,请崩溃我的程序,关闭我的编译器@lawrence。我提供的代码不是最终的解决方案。你不能按原样使用它,它只是一个示例,让你了解你需要做什么。你应该先正确声明名称数组,然后再使用它。看起来你只是在寻找完整的解决方案,而不需要f了解问题。错误C2440:“=”:无法从“void”转换为“char**”从“void”转换为指向非-void的指针需要显式强制转换错误C2440:“=”:无法从“void”转换为“char*”:从“void”转换为指向非-void的指针需要显式强制转换错误执行cl.exe。确定我将强制转换它…你用的是哪种编译器…它一定很旧了than@R.A完成了铸造,修改了答案…顺便说一句,现代编译器不需要它。你在使用什么编译器?你工作得很好..兄弟你能解释我这段代码中的**是什么吗?我是初学者兄弟,所以我不能理解你的程序,请给我一个解释兄弟..@jekyll
for(i=0;i<a;i++)
{
    printf("enter the names:");
    scanf("%s",name);
}
for(i=0;i<a;i++)
{
    printf("entered names are:%s\n",name);
}
for(i=0;i<a;i++)
{
printf("Enter the names:")
scanf("%s",name[a]);
}

print("The entered names are: ");
for(i=0;i<a;i++)
{
printf("%s", name[a]);
}
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
   char **name;
   int a;
   printf("no. of names:");
   scanf("%d",&a);
   int i;
   if( a<=0 )
      return 0;
   name = (char**)malloc( sizeof(char*)*a);
   for(i=0;i<a;i++)
   {
      printf("enter the name:");
      name[i]=(char*)malloc( sizeof(char)*128);
      scanf("%s",name[i]);
   }
   for(i=0;i<a;i++)
   {
      printf("entered names are:%s\n",name[i]);
      free(name[i]);
   }
   free(name);
   return(0);
}