首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哪些字符在字符串文本中合法使用?

哪些字符在字符串文本中合法使用?
EN

Stack Overflow用户
提问于 2015-02-12 19:09:56
回答 3查看 5K关注 0票数 1

我想知道在C中将ascii字符(如TABBELESC )直接放在字符串文本中是否合法。

这里无法在Stackoverflow上以纯文本显示字符,所以我不得不用屏幕截图代替。

没有图形表示的字符将使用卡雷特表示法显示,并在屏幕截图中以紫色高亮显示。在行TAB-character中也有缩进文本的7

使用gcc -std=c99 -pedantic编译时没有任何警告,但是它真的是完全可移植的吗?

我不会在任何严肃的节目中用到这一点。我只是好奇,如果标准允许的话。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-12 20:34:19

可以在程序源代码中转接的可移植字符如下:

  • 26个拉丁字母大写字母 A、B、C、D、E、F、G、H、I、J、L、M、N、O、P、Q、S、T、U、V、W、X、Y、Z
  • 26个拉丁字母的小写字母 A b,c,d,f,g,h,i,k,l,n,p,q,r,s,t,v,w,x,y,z 十进制数字 0 1 2 3 4 5 6 7 8
  • 以下29个图形字符 !#%&‘()*+,-/:;<=>?\^_{x}~
  • 空格字符,以及表示水平选项卡、垂直选项卡和表单提要的控制字符。

资料来源:C标准,任何版本。

实现必须接受这些字符,并且允许接受任何其他字符。

票数 3
EN

Stack Overflow用户

发布于 2015-02-12 20:46:37

如果反斜杠立即出现在文字换行符(而不是\n)前面,则反斜杠和换行符都会被移除。除了在三角图之间,行可以像其他地方一样被分割(如果一个三角图被反斜杠-换行符序列分割,则该序列被移除,但三角图保持不变)。

在字符串文本中(在可移植代码中)允许使用文字制表符,并且具有与\t相同的语义。C11 (n1570) 6.4.5 p1声明,“除双引号"、反斜杠\或新行字符之外的源字符集的任何成员”都可以是字符串文字的一部分,制表符字符是源字符集的一部分(同上)。5.2.1 p3)。

转义字符(\e,ASCI0x1b)不是源字符集的一部分,甚至可能根本不存在(在非ASCII系统上)。表单提要也是如此,尽管\f是C标准的一部分。这些字符不能移植使用。

实现可以自由地接受它喜欢的任何字符(除了标准的最低要求之外),从源字符集到执行字符集的映射是实现定义的(实现可以将源代码中的不同字符映射到相同的字符)。

票数 1
EN

Stack Overflow用户

发布于 2015-02-12 19:33:19

一个以空结尾的字符串只是一个8位值的数字,根据它们的签名性,这些值可以是0-255或-128-127。

当你把你的字节发送到像一个终端一样的东西,这一切都取决于终端如何处理这些字节。像'a'-'z‘这样的字节可能是标准的,但前提是您假设了8位字符编码。其他字节,如‘欧元’,可能只能正确地显示正确的字符集。

最后,我们有那些终端控制字节来控制光标和铃声。处理这些字节完全取决于终端,但是编写它们仍然是有效的C代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28485801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档