题主,你好。做为一名高校信息技术的专业教师,很高兴来为你回答问题。
我将从问题出现原因和问题的解决办法两个方面来回答你的问题。
问题原因
1.你可能对strlen()函数的工作原理没有弄清楚
strlen函数是用来测试一个字符串的长度。它的工作原理是:从第1个字符开始扫描,一直到遇到字符串结束标志\0。如果它不能扫描到这个标志,它就会出现一些问题。
我在VC6.0中试图重演的你的错误。虽然出现了你原理相同的错误,但是最后的输出值不相同。
那么,你想要的字符串为什么没有结束标志呢?原因就可能如下了。
2.你可能对字符数组作为普遍数组和字符串的情况没有区分和掌握
字符数组可以当做普遍数组和字符串来使用。
A.当作普通数组的例子。
char ch[5]={'a','b','c','d','e'};
B.当作字符串
char ch[6]='abcde' ;
请区分它们的区别。
3.你可能对字符串输入到字符数组方法没有掌握
如果你一个字符数组需要用来存储字符串,则输入的时候有两种方法
A.用带%s的scanf函数
如:char ch[6];
scanf('%s',ch); //ch是字符数组名,为该数组首地址
B.用gets函数
如:char ch[6];
gets(ch);
同时请注意,这两种输入方法,能接受的字符类型是不一样,具体的解释,可以关注 严sir课堂 学习相关内容。
问题解决
方法:改变字符输入的方式,具体操作如下图
这就是这个问题的回答。
如果你觉得这个回答对你有帮助,请关注 严sir课堂, 我们有关于C的系列课程推出。