【原创源码】 自己写的常用VC函数
头文件和函数声明:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 去除头尾的空白字符, 返回一个C风格字符串指针
// 注: 不创建新的buffer,不作内存拷贝和移动
// 如果长空为零,则返回NULL
char* AfTrim(char* src);
// 输入一个字符串, 存到output里(左右的空白字符会被自动去掉)
char* AfGetString(char* output);
// 获取一个整数, 如果输入为空则返回默认值defValue
int AfGetInt(int defValue);
// 获取一个小数, 如果输入为空则返回默认值defValue
double AfGetDouble(double defValue);
// 获取单字符输入, 如果输入为空则返回默认值defValue
char AfGetChar(char defValue);
// 获取bool型输入, 如果输入为空则返回默认值defValue
bool AfGetBool(bool defValue);
函数体:
// 去除头尾的空白字符, 返回一个C风格字符串指针
// 注: 不创建新的buffer,不作内存拷贝和移动
// 如果长空为零,则返回NULL
char* AfTrim(char* src)
{
char* pStart = NULL;
char* pEnd = NULL;
char* p;
// 从第1个字符开始扫描
for(p=src ; *p != '\0'; p ++ )
{
if(*p == ' ' || *p == '\t' || *p== '\n')
;
else
{
pStart = p; // 开头
break;
}
}
// 全部为空白字符
if(pStart == NULL)
{
*src = '\0';
return src ;
}
// 继续扫描
bool nonBlank = true;
for( ; ; p ++ )
{
if(*p == ' ' || *p == '\t' || *p== '\n' ||*p=='\0')
{
if(nonBlank)
{
pEnd = p;
nonBlank = false;
}
if(*p == '\0') break;
}
else
{
nonBlank = true;
}
}
// 截断末尾的空白
*pEnd = '\0';
// 有效长度为0,返回空指针
if(pEnd == pStart) return NULL;
return pStart;
}
// 输入一个字符串, 返回接收到的长度
char* AfGetString(char* output)
{
char buf;
gets(buf);
char* str = AfTrim(buf);
if(str == NULL)
return NULL;
else
{
strcpy(output, str);
return output;
}
}
// 获取一个整数
int AfGetInt(int defValue)
{
char buf;
char* str = AfGetString(buf);
if(str == NULL)
return defValue;
else
return atoi(str);
}
// 获取一个小数
double AfGetDouble(double defValue)
{
char buf;
char* str = AfGetString(buf);
if(str == NULL)
return defValue;
else
return atof(str);
}
// 获取单字符输入
char AfGetChar(char defValue)
{
char buf;
char* str = AfGetString(buf);
if(str == NULL)
return defValue;
else
return str;
}
// 获取bool型输入
bool AfGetBool(bool defValue)
{
char buf;
char* str = AfGetString(buf);
if(str == NULL)
return defValue;
else
{
if(strcmp(str, "YES") == 0
|| strcmp(str, "yes") == 0
|| strcmp(str, "1") == 0
|| strcmp(str, "true") == 0
|| strcmp(str, "TRUE") == 0)
return true;
return false;
}
}
使用试例:
struct User
{
int id;
char name;
char phone;
bool vip;
};
int main()
{
User u;
u.id = AfGetInt(0);
AfGetString(u.name);
AfGetString(u.phone);
u.vip = AfGetBool(true);
system("pause");
return 0;
}
好吧 支持一下,感觉纯纯的 好吧 支持一下,感觉纯纯的 楼主新手,而且不会超过18岁.
建议楼主认为自己有能力了,不妨写个字符串的处理类实用些.
使用string来写,实现正则的一些功能.
基础点的,如csv识别,文本提取等等.然后再不停的优化.很练手 有点少,多搞一点
页:
[1]