strcat语法老是把我的字符串组弄坏
发表在C语言图书答疑 2016-07-04
是否精华
版块置顶:
#include<stdio.h>
#include<string.h>

int main()
{
int xx=1,bj; /*xx=选项,bj=标记*/
char mz[240],gd[10],jw[3]="0"; /*mz=名字,gd=对名字的过渡,jw=结尾的特殊标记*/

while(xx!=0)
{
printf("---------菜单---------\n");
printf("--添加学生姓名-------1\n");
printf("--显示所有学生姓名---2\n");
printf("--退出程序-----------0\n");
printf("----------------------\n");

scanf("%d",&xx);

switch(xx)
{
case 1:
printf("请逐个输入学生姓名:");
scanf("%s",&gd);
strcat(mz,gd);
strcat(mz,jw);
break;
case 2:
printf("%c%c%c%c%c%c\n",mz[0],mz[1],mz[2],mz[3],mz[4],mz[5]);
break;
}
}

return 0;
}
我想通过输入学生名字,然后再通过strcat语法连接在总学生名录中,在再总学生名录中后添加0作为结束标记。
可是只要一用strcat语法,输出的单词就会出错。。。。
在输出单词时会显示一堆的烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
case 2是我为了输出汉字随便写的,不必在意哈
分享到:
精彩评论 1
again
学分:250 LV4
2016-07-05
沙发
变量使用之前应该赋值。

这种 函数作域内的变量, 如果不赋值的话, 数组里面的值是不确定的。

这里赋值应该是清零,这样写:char mz[240],gd[10],jw[3]="0";
memset(mz, 0, sizeof(mz));
memset(gd, 0, sizeof(gd));

strcat的作用是, 在数组末尾”接上“ 一段字符串。 如何确定末尾呢? C语言以 '\0' 作为字符串的尾。

如果数组本身 没有清零的话, 末尾的位置是不确定的。 所以 字符串就不知道拼接到哪里去了。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照