一个C语言转义符识别问题。求大佬解答?

作者&投稿:庄帘 (若有异议请与网页底部的电邮联系)
一个C语言转义符问题,求教大神~

这个要好好看看转义字符,\b代表退格。故abc\b的输出为ab,故abc\bdef的输出为abdef,然后就是输出一个tab 即一个空格,的意思是调到本行开头,故ghi的输出将覆盖以前输出的abd,故输出为ghief。

转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012

换行(LF) 010
回车(CR) 013
水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制


字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。
在C程序中使用转义字符\ d d d或者\ x h h可以方便灵活地表示任意字符。\ d d d为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制A S C I I码值。\ x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。

使用转义字符时需要注意以下问题:
1) 转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
2) \v 垂直制表和\f 换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
3) 在C程序中,使用不可打印字符时,通常用转义字符表示


注:
1,\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
2,
其实应该叫回车换行。换行只是换一行,不改变光标的横坐标;回车只是回到行首,不改变光标的纵坐标。
3, 光标向前移动四格或八格,可以在编译器里设置
4,\' 在字符里(即单引号里)使用。在字符串里(即双引号里)不需要,只要用 ' 即可。
5,\? 其实不必要。只要用 ? 就可以了(在windows VC6 和tc2 中验证)。
打字不易,如满意,望采纳。

注意输入文字中可能有空格,以及输入完单个字符后需要getchar()跳过回车

C代码和运行结果如下:

输入输出符合样例,望采纳~

附源码:

#include <stdio.h>

void emoji(char *txt, char s, char t) {

    int i, j, p = -1; // p记录转义符s的下标

    for (i = 0; txt[i] != '\0'; ++i) {

        if (txt[i] == s)

            p = i;

        else if (txt[i] == t && p >= 0 && p + 1 < i) { // 匹配到一个表情

            for (j = p + 1; j < i; ++j)

                printf("%c", txt[j]);

            return;

        }

    }

    printf("未匹配到表情");

}

int main() {

    char txt[141], s, t; // 转义和终止符

    printf("输入转义符: ");

    scanf("%c", &s);

    getchar(); // 跳过输入完转义符后的回车

    printf("输入终止符: ");

    scanf("%c", &t);

    getchar(); // 跳过输入完终止符后的回车

    printf("输入文字: ");

    scanf("%[^
]", txt); // 输入一行包括空格在内的字符串,遇'
'停止

    printf("输出: ");

    emoji(txt, s ,t);

    return 0;

}




一个C语言转义符识别问题。求大佬解答?
else if (txt[i] == t && p >= 0 && p + 1 < i) { \/\/ 匹配到一个表情 for (j = p + 1; j < i; ++j)printf("%c", txt[j]);return;} } printf("未匹配到表情");} int main() { char txt[141], s, t; \/\/ 转义和终止符 printf("输入转义符: ");scanf("%c...

C语言怎样判断合法转义字符
'\\0'是八进制的转移字符,如果看到:\\087这就是非法的,'\\0x'表示十六进制,还有一些必备的如:'\\n','\\r'这些。和普通的字符判断相同,比如判断和'a'是否相同,ch=='a',那么判断转义一样,如ch=='\\n',逻辑表达式的结果只有两个,true和false,所有的逻辑表达式都一样,为真就是true,否...

C语言中如何判断是不是合法转义字符?
'\\0'是八进制的转移字符,如果看到:\\087这就是非法的,'\\0x'表示十六进制,还有一些必备的如:'\\n','\\r'这些。和普通的字符判断相同,比如判断和'a'是否相同,ch=='a',那么判断转义一样,如ch=='\\n',逻辑表达式的结果只有两个,true和false,所有的逻辑表达式都一样,为真就是true,否...

C语言中怎么判断转义字符是否合法
char ch;ch='\\t';\/\/这是要判断的转义字符,可以换成要测试的。printf("%c\\n",ch);} \/\/若程序能运行,就认为转义符合法。

C语言中的转义字符都是什么?
c语言中的转义字符:\\a 响铃符 通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号('),用于表示字符串常量的双撇号(")和反斜杠(\\)等。实例:通过puts可以输出字符串,例如:"123abc" 对应的ASCII码值的八进制分别是 61、62、63、141、142...

C语言如何判断字符串中是否包含转义字符,比如一个字符串 “abc\\'ef...
不管用单引号还是双引号,只要带反斜杠就是转义,如果需要打印反斜杠,就"\\\\" 。你是想判断字符串中有没有使用转义?让我试试。。。晕死,今天我大脑进屎了,转义是编译器干的,二进制代码中没有任何转义字符的信息了。include<stdio.h> int main(){ char a[20]="abc\\'efgh";int i=0;for...

C语言中的转义字符\\ a是什么意思?
C语言中的转义字符\\a(响铃)是在标准输出设备输出字符'\\a'时,系统自带的扬声器(或蜂鸣器)会发出“叮”的一声。转义字符不同于字符原有的意义,例如,在前面各例题printf函数的格式串中用到的“\\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码...

c语言中怎么判断一个转义字符是合法的?
转义字符就那么多 分为两类 一个是固定字母的 比如 \\t \\n 这个就只能背了 没什么办法 另一类就是通用的,包括8进制 16进制 8进制的 \\ooo 后面的ooo是1到3个合法的8进制字符。16进制 \\xhh 后面的hh是1到2个合法的16进制字符。符合以上的 就是合法的。 否则非法。

c语言中“\\ n”是什么意思?
C语言中“\n”是一个转义字符,系统识别到该转义字符时会自动换行。C语言中printf("\\n")是打印回车符的意思,也就是我们俗称的换行。不过在不同的语言中,换行符的代码也有所不同。在前端网页开发中换行用表示,C语言中是"\\n",C++中是"endl"等。C语言中其他转义字符的含义 C语言中\\再加上一...

在C语言编程中用转义字符有什么好处?
c语言中用转义字符并没有什么好处。因为转义字符已经用来表示特定的意义,如果不通过 “\\” 来区别,那么转义字符自动识别为特定的意义,就跟关键字一样。

长沙市19726994595: C语言转义字符问题 -
正仲田草: 转义的字符都是出自 ascll码表的ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符. 如果是用8进制 最多三位就能表示完了.8的三次方>256 如果用16进制 最多两位就表示完了 16的2次方>256默认的是2进制的8位=8进制的3位=16进制的2位=这个在计算机中用二进制表示起来都是一摸一样的

长沙市19726994595: c语言转义字符的问题.printf("abc\t123\r456\n");结果是“456 123”.printf("abc\t123\r456");结果是456 -
正仲田草: 这种输出字符的问题 解释起来最麻烦了 运行一下代码,仔细注意下光标位置变化就懂了#include<stdio.h>#include<windows.h> int main() { char str[100]="abc\t123\r456\n"; char *p=str; while(*p) { putchar(*p++); Sleep(3000); } return 0; }

长沙市19726994595: 刚学c语言想问一下转义字符的问题? 我写了printf("abcdefg\b\n"); 按照 -
正仲田草: 如果你写成这样printf("abcdefg\b \n"); b后加个空格,会看不到g 如果你写成这样printf("abcdefg\bh\n"); b后加个h,输出会是abcdefh \b只是退格,向前走一个字符,但输出到屏幕上的信息并不能清除,所以,这时,如果你直接回车,则还是能看到前面的字符 如果,后面再有字符输出,才会覆盖掉前面的字符. 这是显示的问题.

长沙市19726994595: C语言转义字符的问题 望高手解答
正仲田草: 有点弄不明白楼主的问题.\是转译字符,\\表示/,这个在显示路径时会用到,如c://d//v ,也就是在c盘的d下的v里面,也可已表示为c:\d\c 望采纳

长沙市19726994595: 转义符的识别 -
正仲田草: 无论是形如“\ ”“\\t”这样的字符,还是\\ddd与\\xhh形式的字符,均可识别. 输入:abc\ abc\\tabc\\x0aabc\\012abc 输出: abc abc abc abc abc abc #include<stdio.h> void interpret(char *s1,char *s2); int fun8(char *x); int fun16(char *x); int main(...

长沙市19726994595: 请教下C语言转义字符解析的问题.
正仲田草: 先分解开这个输出printf("\tfirst\b\b\bsh\\\r\'NO.1\'") \t-first-\b-\b-\b-sh-\\-\r-\'-NO.1-\' 这样分为11部分 然后依次输出 \t输出制表符,根据编译器设置可能为8个或者4个空格(这里我们认为是8个), 然后输出first这5个字符 在输出三个\b,也就是光标...

长沙市19726994595: c语言转义字符的问题 -
正仲田草: 是的!是一个beep的声音!转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠 092 \? 问号字符 063 \' ...

长沙市19726994595: c语言 字符数组中的转义字符 -
正仲田草: 第二个式子正确是因为 "\"后面跟数字,则系统将在0-255之间进行识别,即一个字节. 而用"\x"时系统按十六进制进行识别,这时,其最大长度为系统设定值 ,如 32位系统,最多4个字符,64位系统最多8个字符,故出错.回到你的问题,你是希望有那样长的一个字符串.可以采用如下表示: char data[40] = {0xaa, 0x55, "dddddd",0};

长沙市19726994595: c语言转义字符的问题
正仲田草: 不是 \x后面的x必须小写 正确的形式是\xh[h...] 如果表示ascii码就是两位16进制字符了,语言支持unicode的,可以写4位 补充:是的

长沙市19726994595: C语言转义字符问题
正仲田草: \t 表示跳转到下一个制表位的位置,一般在dos显示,8个字符为一个制表位,相当于按下tab键\r 是回车,相当于enter键.\b 就是往后倒退一次,就相当于按下 backspace键,所以第一个输出为:空格ab空格c空格空格空格 空格de(中间的空白就是下一个制表位的开始)f g第二个输出为:h空格空格空格空格空格空格j(这里本来是空格,但是两次\b后j就在这里输出了) i空格k

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网