C语言中字符串的存储以及输出问题
发布网友
发布时间:2022-04-30 02:33
我来回答
共3个回答
热心网友
时间:2023-10-07 06:56
1.
换行是puts的自带技能,使用puts会自动换行
2.
char c[]={'H','i','\0'};跟char c[]={'H','i'}; 长度不一样,它们的区别就是一般字符数组和字符串的区别
// 这里字符数组c的长度为3,包含'H','i','\0'这三个元素,其中'\0'为字符串结束符
// c可以作为字符串使用,等效于char c[]="Hi";
char c[]={'H','i','\0'};// 这里字符数组c的长度为2,包含'H','i'这两个元素,不含字符串结束符
// c只是一个字符数组,不能作为字符串使用;
char c[]={'H','i'}; 用printf()函数输出看看就能更明白了。
还有问题的话可以继续追问。
热心网友
时间:2023-10-07 06:57
因为你调用的是puts这个函数,这个函数会自动给你添加1个换行符,如果你的字符串里有换行符再用这个换行符就会换行2次了
字符串数组都以'\0'结尾,如果你没加会给你自动加前提是按"asdsa"这样双引号的形式,自动换行是puts的原因如果你用printf就不换行了
char
c[]={'H','i','\0'};跟char
c[]={'H','i'};
前面一个是字符串
后面一个是字符数组不是字符串因为没有显示的'\0',看你要字符串还是字符串数组了。
热心网友
时间:2023-10-07 06:57
楼上的没有解决问题
楼主的问题主要是puts引起的,puts输出是遇到结束符后才结束的,所以输出的后面会出现乱码的现象(未知字符)
解决这个问题非常简答,就是在c数组转换完毕后添加一个结束符
修改如下:
#include
#include
void
main()
{
int
i,l;
char
ch[10],c[10],*p;
gets(ch);
l=strlen(ch);
puts(ch);
p=ch+l-1;
for(i=0;i
评论
0
0
加载更多