'的 ,''是串结束符的标志所以a[3]=''赋值给了b[3],而b[4]就没改变,仍是E,b[5]也就没变因遇到''"og:type" content="webpage">'的 ,''是串结束符的标志所以a[3]=''赋值给了b[3],而b[4]就没改变,仍是E,b[5]也就没变因遇到''" /> '的 ,''是串结束符的标志所以a[3]=''赋值给了b[3],而b[4]就没改变,仍是E,b[5]也就没变因遇到''"> 执行以下程序段的输出结果是什么_CMS教程_内存溢出
CMS教程

CMS教程

执行以下程序段的输出结果是什么,第1张

阅读 6

因为strcpy拷贝包含'\0'的 ,'\0'是串结束符的标志

所以a[3]='\0'赋值给了b[3],而b[4]就没改变,仍是E,b[5]也就没变

因遇到'\0'结束输出

故输出结果为"123"

数组b中内容为"123'\0'EF'\0' "

其中b[6]与b[7]是空格

我也不知道,身边也没有c的编译器,网上看了看。首先strcpy(p,"ABCD")这句是说。将ABCD赋值个p,他们之间是怎么赋值的呢,让p指针指向“A”的地址,如果取值的话就P拿到A了。这个函数返回的值是目标串的地址,也就是p啦,那么p是个指针怎么算地址的长度呢,其实就是strlen("ABCD")啦,为什么,计算机知道的啦,因为p指向了“ABCD”首地址了,而c语言中默认在ABCD后加个结束符的,所以答案就是4了。getchar的两点总结:

1getchar是以行为单位进行存取的。当用getchar进行输入时,如果输入的第一个字符

为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D,

那么只有当最后一个输入字符为换行符'\n'(也可以是文件结束符EOF,EOF将在后面讨论时, getchar才会停止执行,整个

程序

将会往下执行。

譬如下面程序段:

while((c = getchar()) != EOF){ putchar(c);}

执行程序,输入:abc,

然后回车。

则程序就会去执行puchar(c),

然后输出abc,

这个地方不要忘了,系统输出的还有一个回车。

然后可以继续输入,再次遇到换行符的时候,程序又会把那一行的输入的字符输出在终端上。

对于getchar,肯定很多初学的朋友会问,getchar不是以字符为单位读取的吗?那么,

既然我输入了第一个字符a,

肯定满足while循环(c = getchar()) != EOF的条件阿,

那么应该执行putchar(c)在终端输出一个字符a。不错,我在用getchar的时候也是一直这么想的,但是程序就偏偏不着样执行,而是必需读到一个换行符或者文件结束符EOF才进行一次输出。

2getchar()的返回值一般情况下是字符,但也可能是负值,即返回EOF。

char转换

Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量

类型

,而且函数参数类型五花八门,经常需要今年新那个类型转换

Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char类型

在Qt下怎样将QString转char呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。

因为char最后都有一个‘/0’作为结束符,而采用QString::toLatin1()时会在字符串后面加上‘/0’

方法如下:

Qstring str;

char ch;

QByteArray ba = strtoLatin1();

ch=badata();

这样就完成了QString向char的转化。经测试程序运行时不会出现bug

注意第三行,一定要加上,不可以strtoLatin1()data()这样一部完成,可能会出错。

补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char就是乱码,采用如下方法解决:

方法1:

添加GBK编码支持:

#include <QTextCodec>

QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));

然后改变上面的第三行为:QByteArray ba = strtoLoacl8Bit(); toLoacl8Bit支持中文

方法2:

先将QString转为标准库中的string类型,然后将string转为char,如下:

std::string str = filenametoStdString();

const char ch = strc_str();

以上就是关于执行以下程序段的输出结果是什么全部的内容,包括:执行以下程序段的输出结果是什么、下面程序段的运行结果是( )。 char *p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"ABCD")、c语言中的getchar如何使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:
内存溢出字符
类型
(0) 微信扫一扫 支付宝扫一扫 打赏
微信扫一扫
2023-04-28
下一篇

2023-04-28
发表评论
请登录后评论...

登录

后才能评论
提交
窝火
恋物癖
{label} {label} {label} {label}保存{label} {label} {label} {label}