一个C语言转义符识别问题。求大佬解答?
现在要求编写程序,在输入的一句文字中,输出被转义符括起来的表情名称文字。
1. 首先输入转义符,然后输入终止符,二者均为临时指定的任意半角标点符号,随后输入一行任意的文字,由英文、数字和符号组成。文字最长不超过140个字符;
2. 被转义符括起来的表情名称文字,如有多个表情名称,则分行输出。
输入输出样例如下:
转义符:*
终止符:#
输入文字: Time for lunch .* greedy # Hope a big meal .
输出: greedy
多个转义符以距离终止符最近的一个为准:
输入文字:* happy * smile #
输出: smile 展开
注意输入文字中可能有空格,以及输入完单个字符后需要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("%[^\n]", txt); // 输入一行包括空格在内的字符串,遇'\n'停止
printf("输出: ");
emoji(txt, s ,t);
return 0;
}