scanf -- 英文意思是 scan (扫描)f == format (有格式),就是有格式输入。
成都创新互联公司服务项目包括河西网站建设、河西网站制作、河西网页制作以及河西网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,河西网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到河西省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
scanf("%lf,%lf,%lf", -- 格式是1个double,1个逗号,1个double,1个逗号,1个double。
scanf("%lf%lf%lf", -- 3 个double,默认格式,分隔符是空白(空格,tab, 换行。。。)。
对应的输入数据要按scanf 定义的格式。
如果你想 既能用 空白,又能用逗号 分隔,可以这样写:
int main(){
double a,b,c;
scanf("%lf%*1c%lf%*1c%lf",a,b,c);
if(ab)a=b;
if(ac)a=c;
printf("MAX=%7.2lf\n",a);
return 0;
}
%*1c 就是跳过一个符号的意思。
1,2,3
1 2 3
都没问题,反正逗号也好,空白也好,我跳过去,不睬它。
如果是字符数组,可以使用strstr函数查找匹配。
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL。
包含文件:string.h
函数名: strstr
函数原型:
extern char *strstr(char *str1, const char *str2);
语法:
char * strstr(str1,str2)
str1: 被查找目标 string expression to search.
str2: 要查找对象 The string expression to find.
返回值:若str2是str1的子串,则先确定str2在str1的第一次出现的位置,并返回此str1在str2首位置的地址。;如果str2不是str1的子串,则返回NULL。
如果是普通类型的数组,需要使用双重循环来实现匹配。
例如:
int a[10]={0,1,2,3,4,5,6,7,8,9,0};
int b[3]={5,6,7};
int i,j;
for(i=0;i7;i++){
for(j=0;j3;j++) if(a[i+j]!=b[j]) break; //进行匹配,如果其中一个不匹配,中断循环。
if(j==3){ //寻找到匹配
printf("匹配!");
break;
}
}
if(i==7){ //循环完仍未找到匹配
printf("不匹配!");
}
我这里运行,没有运行时错误,只是按你的代码结果不对。
调整后代码如下:
#include stdio.h
#include string.h
char *strstr(char*str1,char*str2)
{
int n1 = strlen(str1);
int n2 = strlen(str2);
int flg = 0;
char *p1 = str1;
char *p2 = str2;
if(n1n2) return NULL;
int i;
for(i=0;in1-n2+1;i++)
{
p1 = str1+i;
p2 = str2;
while(*p2!=NULL)//
{
if(*p1!=*p2)
{
flg = 0;
p1++;
p2++;
break;
}
p1++;
p2++;
flg = 1;
}
if(flg) return str1+i;//你到底要输出什么,原函数是输出位置int
}
return NULL;//
}
int main()
{
char str1[]="str1adsfqwer";
char str2[]="ads";
char *p = strstr(str1,str2);
printf("%s\n",p);
return 0;
}
#include stdio.h
#include string.h
int main(int argc, char **argv)
{
char *A="abcd_V102.123.efg";
char B[1024];
char *p;
char *q;
p = strstr(A, "_V"); //匹配"_V"
if(p){
q = strchr(p + strlen("_V"), '.'); //匹配'.'
if(q){
p += strlen("_");
memcpy(B, p, q - p);
B[q-p] = '\0';
printf("%s\n", B);
}
}
return 0;
}
这就是数据库的最基本功能么.... - -
把这些东西搞成一个对象,比如
struct xxx_info {
char *name;
char *localclient
....
}
再定义一个函数
struct * find(struct xxx_info *criteria) { ... }
这个函数接受一个xxx_info 作为参数,返回匹配的xxx_info对象
传参数的时候首先新建一个xxx_info对象,然后如果你有值需要匹配,就设置相应的值,比如你要匹配localclient 和peerhost ,就写:
xxx_info *a = (xxx_info *) malloc(...);
a-localclient = "什么值";
a-peerhost = "什么值";
不需要匹配的值让它为NULL就行
find 函数的实现,就是在一个数组(或者别的种类的集合)中遍历,寻找和criteria对象符合的xxx_info
这只是基本,利用C语言,你想做出更类似面向对象的函数接口,也没问题...
int SStrlength(String Str)
{ int i=0;
while(Str.ch[i]!='/0')
这里是错的,数组结束符是\0, 而不是/0