怎样定义一个字符类型的宏在双引号中可以使用

stormier 2014-02-09 05:15:13
#define ABC 'p'这样肯定不行
...全文
164 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
EACCD3B1 2014-02-27
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
仅供参考
#include <stdio.h>
#define BUF_LEN 1024
#define EMAIL_LEN 80
#define QUOTE1(q) #q
#define QUOTE(q) QUOTE1(q)
char s[]="\"单身\"<760026313@qq.com>; \"XXD\"<502144951@qq.com>; \"凤凰\"<542307112@qq.com>;\"\" <111@qq.com>;\"\" <222@sina.com.cn>;\"\" <333@yahoo.com>;";
char *p,*q;
int n,k;
char e[EMAIL_LEN];
char b[BUF_LEN];
void main() {
    p=s;
    q=b;
    while (1) {
        if (1==sscanf(p,"%*[^<]<%"QUOTE(EMAIL_LEN)"[^>]>%n",e,&n)) {
            p+=n;
            k=sprintf(q,"%s|",e);
            q+=k;
            if (q-b>BUF_LEN-EMAIL_LEN) break;
        } else break;
    }
    q[-1]=0;//去掉末尾的|
    printf("%s\n",b);
}
//760026313@qq.com|502144951@qq.com|542307112@qq.com|111@qq.com|222@sina.com.cn|333@yahoo.com
强悍啊
赵4老师 2014-02-09
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
#define BUF_LEN 1024
#define EMAIL_LEN 80
#define QUOTE1(q) #q
#define QUOTE(q) QUOTE1(q)
char s[]="\"单身\"<760026313@qq.com>; \"XXD\"<502144951@qq.com>; \"凤凰\"<542307112@qq.com>;\"\" <111@qq.com>;\"\" <222@sina.com.cn>;\"\" <333@yahoo.com>;";
char *p,*q;
int n,k;
char e[EMAIL_LEN];
char b[BUF_LEN];
void main() {
    p=s;
    q=b;
    while (1) {
        if (1==sscanf(p,"%*[^<]<%"QUOTE(EMAIL_LEN)"[^>]>%n",e,&n)) {
            p+=n;
            k=sprintf(q,"%s|",e);
            q+=k;
            if (q-b>BUF_LEN-EMAIL_LEN) break;
        } else break;
    }
    q[-1]=0;//去掉末尾的|
    printf("%s\n",b);
}
//760026313@qq.com|502144951@qq.com|542307112@qq.com|111@qq.com|222@sina.com.cn|333@yahoo.com
taodm 2014-02-09
  • 打赏
  • 举报
回复
虽然没看懂你的需求 但是,宏不是万能的,别什么东西都想扯到宏来实现。 基本上,是你的需求错误。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧