字符串初始化赋值行不通,怎么回事?
#include<stdio.h>#include<stdlib.h>
#define MAXLEN 40
typedef struct { /*串结构定义*/
char ch[MAXLEN];
int len;
}SString;
void output(SString *s)
{
int i;
for (i=0;i<s->len;i++)
printf("%c ",s->ch[i]);
printf("\n");
}
//(1)将顺序串r中所有值为ch1的字符换成ch2的字符
void trans(SString *s,char ch1,char ch2)
{
int i;
for(i=0;i<s->len;i++)
if(s->ch[i]==ch1)
s->ch[i]=ch2;
printf("顺序串中所有值为ch1的字符换成ch2的字符后,顺序串:\n");
output(s);
}
void main()
{
SString A;
char p='e',q='a';
A.ch[40]="please";
output(&A);
trans(&A,p,q);
}
为什么A.ch[40]="please";不可以直接赋值,而“去掉该句,加上 char b[]="please";
strcpy(A.ch,b); 却可以呢?”
请高手指点。