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

stormier 2014-02-09 05:15:13
#define ABC 'p'这样肯定不行
...全文
78 点赞 收藏 3
写回复
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日
虽然没看懂你的需求 但是,宏不是万能的,别什么东西都想扯到宏来实现。 基本上,是你的需求错误。
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告