重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
//
成都创新互联是一家专业提供伊金霍洛企业网站建设,专注与网站设计、网站建设、H5场景定制、小程序制作等业务。10年已为伊金霍洛众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
string[500]="abcdefg";
//是将字符串"abcdef"赋值给字符数组中string[500]这个元素,先不说string[500]已经越界了.
单单是string[500]只能存放一个字符,但你这里却要将一串字符串赋值给他.当然会错误.
像你说的在定义时初始化是对的.
如果定义后要进行赋值.就用string.h中的strcpy()函数,将"abcdefg"复制到字符串string中.
代码如下:
#include
stdio.h
#include
string.h
int
main()
{
char
string[500];
//
string[500]="abcdefg";
strcpy(string,"abcdefg");
//将字符串常量赋值给字符数组
return
0;
}
//
string[500]="abcdefg";
//字符串"abcdef"赋值给字符数组string[500]元素,先说string[500]已经越界.
单单string[500]能存放字符,却要串字符串赋值给.错误.像说定义初始化.定义要进行赋值.用string.hstrcpy()函数,"abcdefg"复制字符串string.代码:
#include
#include
int
main()
{
char
string[500];
//
string[500]="abcdefg";
strcpy(string,"abcdefg");
//字符串量赋值给字符数组return
0;
}
错误有:
1.if(t.ch) free(t.ch);有问题,因为t.ch没有赋初值,在主函数中应加上t.ch=NULL;
2.hstring *t;和Status strassign(hstring t,char *chars)调用t时形式不匹配,指针和引用,可改为:hstring t;或Status strassign(hstring *t,char *chars)
3.在strassign函数中的t.length=i;后加上t.ch[i]='\0';串结束标志。
4.strassign函数要有返回值。
你运行下面修改后的程序
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define MAXSTRLEN 256
#define MAXSTRSIZE 256
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef struct {char *ch;
int length;
}hstring;
Status strassign(hstring t,char *chars){
//生成一个其值等于串常量chars的串t
int i,j;
if(t.ch) free(t.ch);
i=strlen(chars);
if(!i) { t.ch=NULL; t.length=0; }
else{
if(!(t.ch=(char *)malloc(i*sizeof(char))))
exit(OVERFLOW);
for(j=0;ji;j++)
t.ch[j]=chars[j];
t.length=i;
t.ch[i]='\0';
}
return TRUE;
}
void main()
{ hstring t;
int i;t.ch=NULL;
char s[80]="vamos argentina.\n";
strassign(t,s);//32行
for(i=0;t.ch[i]!='\0';i++) printf("%c",t.ch[i]);}//33行
在C语言中,字符串是以字符数组形式存储的,并约定以\0作为结束符。所以字符串赋值不能直接用=赋值,而是要用专门的函数进行复制,在C语言中,这个函数为strcpy。
1
函数名
:
strcpy
2
形式:
char
*
strcpy(char
*dst,
const
char
*src);
3
头文件:
string.h
4
功能:
将src中的字符串复制到dst中,并返回dst的首地址。
5
示例:
char
buf[100],
buf1[100];
strcpy(buf,
"test");//
将字符串test赋值到buf。
strcpy(buf1,
buf);
//将字符串buf的值,赋值给buf1.
字符串不能这样赋值
*str其实和str[0]是等效的
另外str是数组,所以这个指针是常量,所以也不能使用类似str="asdf";的方式进行赋值。
你可以用string.h中的strcpy()函数,该函数会自动添加\0
#includestdio.h
main()
{
char str[40];
strcpy(str,"aldkjflakdsjfalkfj");
puts(str);
}
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,输入C语言代码:char a[20];strcpy(a, "hello");printf("%s", a);。
3、编译器运行test.cpp文件,此时成功将字符串赋值给了字符串a并打印。