| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:字符串初始化赋值行不通,怎么回事?
只看楼主 加入收藏
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
字符串初始化赋值行不通,怎么回事?
#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); 却可以呢?”
请高手指点。
搜索更多相关主题的帖子: 赋值 字符 
2010-04-23 13:37
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:20 
A.ch[40]="please" 是给A.ch[40]赋值,即是给A的数组成员ch的元素 ch[40]赋值,它越界了,并且类型也不匹配(char 与 char *)
char b[]="please";这样定义时赋值是允许的

给A赋初值可以在定义时 SString A = {"please",1};
2010-04-23 14:07
自欺欺人
Rank: 5Rank: 5
等 级:职业侠客
帖 子:71
专家分:370
注 册:2010-4-14
收藏
得分:0 
同楼上……你越界了……
2010-04-24 11:16
快速回复:字符串初始化赋值行不通,怎么回事?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011752 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved