- 论坛徽章:
- 0
|
原帖由 zliming 于 2006-9-11 10:40 发表
/**************************************************************
功能:从 src 中找出前面的字母、数字等内含,即 email 地址中 @ 的前面部分
*********************************************************** ...
试一下下面的代码:
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- void GetBeforePos(char * src, char ** d)
- {
- char * x;
- if(src - 1) x = src - 1;
- else {*d = 0; return ;}
- while(x) {
- if(*x >= 'a' && *x <= 'z') {x--; continue;}
- else if(*x >= 'A' && *x <= 'Z') {x--; continue;}
- else if(*x >= '0' && *x <= '9') {x--; continue;}
- else if(*x == '.' || *x == '-' || *x == '_') {x--; continue;}
- else {break;}
- }
- x++;
- if(x) *d = x;
- else *d = 0;
- }
- int main(int argc, char ** argv)
- {
- char * p;
- char * at;
- if(argc != 2) {
- printf("1 参数个数不对,请输入一个参数,若有空格请用引号,比如:%s \"mailto: zhoulifa@163.com\"", argv[1]);
- exit(1);
- }
- at = strchr(argv[1], '@');
- if(!at) {
- printf("2 参数不对,请输入包含 @ 符号的参数,比如:%s \"mailto:zhoulifa@163.com\"", argv[1]);
- exit(2);
- }
- GetBeforePos(at, &p);
- *at = 0;
- printf("邮件地址前面部分为:%s\n", p);
- return 0;
- }
复制代码
保存此程序为GetBefore.c,然后编译并运行它,如下:
test@local:/source/example/c$ gcc GetBefore.c -Wall -g
test@local:/source/example/c$ ./a.out "mail: zhoulifa@163.com"
邮件地址前面部分为:zhoulifa
test@local:/source/example/c$ ./a.out "mail:zhoulifa@163.com"
邮件地址前面部分为:zhoulifa
test@local:/source/example/c$ ./a.out "发邮件至zhoulifa@163.com"
邮件地址前面部分为:zhoulifa
明白了没?
该函数功能就是:
[size=+3]从一个标准电子邮件地址字符串,比如zhoulifa@163.com中,找出@前面部分字符 |
|