首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言指针字符串赋值解决方案

2012-03-18 
C语言指针字符串赋值程序如下,为什么我输入三个字符串后,输入的n[i]都是第三个字符串?#includestdio.h m

C语言指针字符串赋值
程序如下,为什么我输入三个字符串后,输入的n[i]都是第三个字符串?  
#include   "stdio.h "  
main()  
{   int   i;  
char   *name,*n[4];  

for(i=1;i <=3;i++)  
{  
scanf( "%s ",name);  
n[i]=name;  
}  
for(i=1;i <=3;i++)  
{  
printf( "%s ",n[i]);  
}  
}
我的目的是想输入三个字符串给字符串数组n。  
n[0]里面还有别的用处。  
另外该公式是摘抄的程序段,所以请尽量不要更改程序的结构,谢谢!

[解决办法]
#include "stdio.h "
#include <malloc.h>
#include <string.h>
main()
{ int i;
char *name,*n[4];
name = (char *)malloc(50); //分配空间
for(i=0;i <4;i++)
n[i] = (char *)malloc(50);

for(i=1;i <=3;i++)
{
scanf( "%s ",name); //name是指针没分配空间,不能进行该操作
//n[i]=name; //这里n[i](指针)全部指向name(最后一次的值,前面的值已经被覆盖)
strcpy(n[i],name); //这里改成这样
}

for(i=1;i <=3;i++)
{
printf( "%s\n ",n[i]);
}
}
[解决办法]
#include <stdio.h>
#include <string.h>

int main()
{
int i;
char *name, *n[4];
clrscr();
name = (char *)malloc( 256 );
for ( i = 1; i < 4; i++ )
{
scanf( "%s ", name );
n[ i ] = ( char * )malloc( 256 );
strcpy( n[ i ], name );
}
for ( i = 1; i < 4; i++ )
printf( "%s\n ", n[ i ] );
free( name );
for ( i = 1; i < 4; i++ )
free( n[ i ] );
return 0;
}
/*字符串不能直接等*/

热点排行