#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct contacks
{ char name[10];
char mobile[10];
char fixtelephone[10];
char Email[20];
char street[20];
}con[50];
int k=0;
void enter();
void display();
void lookandchange();
void del();
void save();
void main()
{
int a;
do
{
printf("\n\n ******************************************************************\n");
printf(" *"); printf("\t\twelcome enter the contacks system"); printf("\t\t*");
printf("\n ******************************************************************\n");
printf(" *"); printf("\t 1.Access information"); printf("\t\t\t\t\t*\n");
printf(" *"); printf("\t 2.display information"); printf("\t\t\t\t*\n");
printf(" *"); printf("\t 3.lookandchange information"); printf("\t\t\t\t*\n");
printf(" *"); printf("\t 4.Delete information"); printf("\t\t\t\t\t*\n");
printf(" *"); printf("\t 5.Save the information"); printf("\t\t\t\t*\n");
printf(" *"); printf("\t 6. exit "); printf("\t\t\t\t\t*\n");
printf(" ******************************************************************\n");
printf(" Enter you choice : ");
scanf("%d",&a);
switch(a)
{
case 1:printf("\n");enter();break;
case 2:printf("\n");display();break;
case 3:printf("\n");lookandchange();break;
case 4:printf("\n");del();break;
case 5:printf("\n");save();break;
case 6:printf("\n");exit(0);break;
default:printf("\nThe choice is between 1 to 6.\n");
}
}while(a!=0);
}
void enter()
{
char ch[20];
printf("\nenter student information:\n");
do
{ printf("\nname: ");
scanf("%s",con[k].name);
printf("mobile: ");
scanf("%s",con[k].mobile);
printf("\nfixtelephone: ");
scanf("%s",con[k].fixtelephone);
printf("\nEmail: ");
scanf("%s",con[k].Email);
printf("\nstreet: ");
scanf("%s",con[k].street);
k++;
printf("\nif want continue input student information(y/n): ");
scanf("%s",ch);
}while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0);
display();
}
void display()
{ int i;
printf(" the information is:\n");
for(i=0;i<k;i++)
{ printf("%10s %20s %10s %10s %10s ",con[i].name,con[i].mobile,con[i].fixtelephone,con[i].Email,con[i].street);
printf("\n"); }
}
void lookandchange()
{
int i;
char a[20],ch[10];
printf("\nenter you want look name:");
scanf("%s",a);
for(i=0;i<k;i++)
if(strcmp(con[i].name,a)==0) printf("%10s %20s %10s %10s %10s ",con[i].name,con[i].mobile,con[i].fixtelephone,con[i].Email,con[i].street);
printf("\nyou sure want change student y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
{ printf("\nenter you want change name:");
scanf("%s",a);
for(i=0;i<k;i++)
{
if(strcmp(con[i].name,a)==0)
{ printf("\nyou sure want change student name(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nname:"); scanf("%s",con[i].name);}
printf("\nyou sure want change mobile(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nmobile"); scanf("%s",con[i].mobile);}
printf("\nyou sure want change fixtelephone(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nfixtelephone"); scanf("%s",con[i].fixtelephone);}
printf("\nyou sure want change Email(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nEmail"); scanf("%s",con[i].Email);}
printf("\nyou sure want changestreet(y/n): ");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nstreet"); scanf("%s",con[i].street);}
}
} }
display();
}
void del()
{
int i,j;
char c[20];
printf("\nenter you want delete name :\n");
printf("name:");
scanf("%s",&c);
for(i=0;i<k;i++)
if(strcmp(c,con[i].name)==0) break;
for(j=i;j<=2;j++)
con[j]=con[j+1];
printf("\t\t\tyou had delete %s\n",c);
k--;
display();
}
void save()
{ FILE *fp; int i;
if((fp=fopen("xinxi.txt","w"))==NULL)
{ printf("cannot write the file.\n");
exit(0);}
for(i=0;strlen(con[i].name)!=0;i++)
fprintf(fp,"%s %s %s %s %s\n",con[i].name,con[i].mobile,con[i].fixtelephone,con[i].Email,con[i].street);
fclose(fp);
}
调试通过 有问题再说
C语言程序设计,通讯录管理系统
/*【用C语言编写具有数据插入、修改、删除、显示和查询功能的电话薄管理程序】
1、数据包括:人名、工作单位、电话号码和E-mail地址。
2、可对记录中的姓名和电话号码进行修改。
3、可增加或删除记录。
4、可显示所有保存的记录。
5、可按人名或电话号码进行查询。
另:采用结构体数组和文件系统实现。结构体包括人名、工作单位、电话号码和E-mail
绝对原创,2010年7月12日晚刚写完测试通过的,纯C语言! */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szSTR 64
#define fileDB "c:\\contact.txt"
struct CONTACT {
char name[szSTR];/*姓名*/
char unit[szSTR];/*工作单位*/
char tele[szSTR];/*电话*/
char mail[szSTR];/*mail*/
};
typedef struct CONTACT CON;
#define BNAME 1
#define BUNIT 2
#define BTELE 4
#define BMAIL 8
#define BFULL 0xFF
int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};
void input(CON * s, int mask)
{
if(mask & BNAME) { printf("请输入学生姓名:"); scanf("%s", s->name); }
if(mask & BUNIT) { printf("请输入工作单位:"); scanf("%s", s->unit); }
if(mask & BTELE) { printf("请输入联系电话:"); scanf("%s", s->tele); }
if(mask & BMAIL) { printf("请输入电子邮件:"); scanf("%s", s->mail); }
}/*end input*/
void show (int id, CON * s)
{
if(!s) return ;
if(id)
printf("%d\t%s\t%s\t%s\t%s\n",
id, s->name , s->unit , s->tele , s->mail );
else
printf("【姓名】%s【工作单位】%s【电话】%s【电邮】%s\n",
s->name , s->unit , s->tele , s->mail );
/*end if*/
}/*end show*/
void regist(void)
{
CON s; FILE * f = 0;
input(&s, BFULL);
f = fopen(fileDB, "ab");
fwrite(&s,sizeof(s),1,f);
fclose(f);
printf("资料已保存!\n");
}/*end regist*/
int browse(char * key, fpos_t * p, CON * s)
{
FILE * f =0; int i = 0, r = 0; CON t;
char * a = 0, * b = 0; fpos_t q;
if(!s) return 0;
f = fopen(fileDB, "rb");
if(!f) {
printf("数据库暂无记录\n");
return 0;
}/*end if*/
printf("编号\t姓名\t单位\t电话\t电邮\n");
printf("------------------------------------------------\n");
while(!feof(f)) {
fgetpos(f, &q);
r = fread(&t, sizeof(t), 1, f);
if(r<1)break;
if(t.name[0]==0) continue;
if(key) {
a = strstr(t.name , key);
b = strstr(t.tele , key);
if(a == 0 && b == 0) continue;
}/*end if*/
if(p) *p = q;
if(s) memcpy(s, &t, sizeof(t));
i++;
show(i, &t);
}/*end while*/
fclose(f);
printf("------------------------------------------------\n");
return i;
}/*end browse*/
fpos_t query(CON * s)
{
char key[szSTR]=""; fpos_t p = 0; int r = 0;
printf("请输入姓名或者电话号码:");
scanf("%s", key);
r = browse(key, &p, s);
return r?p:-1;
}/*end query*/
void clear(void)
{
FILE * f = 0; CON s;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
memset(&s, 0, sizeof(s));
fwrite(&s, sizeof(s),1, f);
fclose(f);
printf("记录已删除!\n");
}/*end clear*/
void modify(void)
{
FILE * f = 0; CON s; int cmd = 0;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
for(;;) {
show(0, &s);
printf("请选择:1-姓名;2-工作单位;3-电话;4-电邮;5-保存并退出;6-放弃修改并退出\n");
scanf("%d", &cmd);
switch(cmd) {
case 1:
case 2:
case 3:
case 4:
input(&s, OPER[cmd]);
break;
case 5:
fsetpos(f, &p);
fwrite(&s, sizeof(s), 1, f);
case 6:
fclose(f);
return;
default:
printf("错误的操作,请重新输入。\n");
}/*end case*/
}/*mext*/
}/*end clear*/
int main(void)
{
int cmd = 0; CON s;
for(;;) {
printf("欢迎使用通信簿!请选择:1-添加;2-查询;3-删除;4-修改;5-全部输出;0-退出\n");
scanf("%d", &cmd);
switch(cmd) {
case 0: return 0;
case 1: regist(); break;
case 2: query(&s); break;
case 3: clear(); break;
case 4: modify(); break;
case 5: browse(0, 0, &s); break;
}//end case
}
return 0;
}
关于单片机(c语言)串行通信的printf的用法和SCON中TI的问题
问题一:printf语句在向串口发送字符之前,有一汇编语句判断 TI 是否为 1 (TI 为是表明一个字符发送完毕),若为 0 则等待,语句如下:
C:0x040C 3099FD JNB TI(0x98.1),C:040C
其目的是等待前一字符发送完毕,才发下一字符。所以初始化串口时必须加一句:TI = 1,否则,程序就在上一个汇编语句上死循环。
问题二:要用printf必须先初始化串行口!
RegEx分析 (str, @"^\s*$|^c:\\con\\con$|[%,\*" + "\"" + @"\s\t\<\>\&]|游客|^Guest");
@"^\s*$|^c:\\con\\con$|[%,\*" + "\"" + @"\s\t\<\>\&]|游客|^Guest"
首先每个"|"是一个“或”,这样就能它分解成五个简单的正则表达式
^\s*$ 这个匹配空字符、0个或多个空白字符
^c:\\con\\con$ 这个是全字匹配,只能匹配"c:\\con\\con“
[%,\*" + "\"" + @"\s\t\<\>\&] 这个是说只要字符串中哈有该列表中其中的一个字符就行
游客 这个只要含有“游客”二字的都匹配
^Guest 这个匹配以Guest开头的字符串更多
这个正则表达式前面的@是什么意思呢,为什么还要加个@,我在VS中把这个@删掉还会报错
^c:\\con\\con$ [%,\*" + "\"" + @"\s\t\<\>\&] 这两行不是很明白
@这个是转义的
^c:\\con\\con$
^ 这表示以其后面的字符开头
$ 这表示以其前面面的字符结尾
[%,\*" + "\"" + @"\s\t\<\>\&]
这个里面列举了一些字符
类似与 [a-z] ,比如说 [a-z] 表示a到z之间的字符
你这个这个正则表达式是由三个字符串,拼成的啊,看错了
@"^\s*$|^c:\\con\\con$|[%,\*" + "\"" + @"\s\t\<\>\&]|游客|^Guest"
最终加起来后:
@"^\s*$|^c:\\con\\con$|[%,\*\"\s\t\<\>\&]|游客|^Guest"
分解后:
^\s*$ 这个匹配空字符、0个或多个空白字符
^c:\\con\\con$ 这个是全字匹配,只能匹配"c:\\con\\con“
[%,\*\"\s\t\<\>\&] 这个是说可以匹配:百分号(%),逗号(,),星号(\*),双引号(\"),任何空白字符(\s),制表符(\t),小于号(\<),大于号(\>)和连接符号(\&)中的任意一个
游客 这个只要含有“游客”二字的都匹配
^Guest 这个匹配以Guest开头的字符串
不好意思啊 小弟新手,还有最后两个问题;
1.^c:\\con\\con$ 这里的\\为什么不是 匹配 \ 呢
2.%,\*" + "\"" + @"\s\t\<\>\& 到 [%,\*\"\s\t\<\>\&] 是怎么转变的啊
1、\\是匹配 \ 的,"c:\\con\\con“ <=> @"c:\con\con“
2、整个正则表达式是由三个字符串拼成的,这个
@"^\s*$|^c:\\con\\con$|[%,\*"
+
"\""
+
@"\s\t\<\>\&]|游客|^Guest"
我的手机是s3030c的,请问如何网络授权?我下载的QQ软件登不上去,为什么!谢谢了!
呵呵 不懂什么叫网络授权。但是这个手机的手机QQ是真的登不上的。你可以用J218的,S3030C机子虽然非常可爱,但是适用软件比较少,J218的可以用,我就用的这个,如果只挂的话就用网页版的吧,省流量,到时候刷新就好了,如果要聊天网页版就不好用了,建议聊天用手机QQ,挂着升级就用3GQQ哦!
用cmd rmdir /s c: con.apl.cache 删了C盘里多文件? 坏了高手进,菜鸟bu要进!
直接删的C盘文件,命令格式都不正确,用sfc /scannow命令可以找回
单片机双机通信c程序
//发送部分
void Init()
{
SCON=0x51;
TMOD=0x20;TH1=0xf3;TL1=0xf3;
ET1=1;
TR1=1;
EA=1;
ES=1;
}
void send()
{
TI=0;
SBUF=0xfe;
while(!TI);
TI=0;
}
void main()
{
Init();
while(1)
{
send();
}
}
//接收部分
uchar a;
void Init()
{
SCON=0x51;
TMOD=0x20;TH1=0xf3;TL1=0xf3;
ET1=1;
TR1=1;
EA=1;
ES=1;
}
void receive()
{
RI=0;
a=SBUF;
while(!RI);
RI=0;
}
void display()
{
P#=a;
}
void main()
{
Init();
while(1)
{
receive();
display();
}
}
应该可以实现你说的那个功能,我没试验。你可以试试
转载请注明出处51数据库 » sconc通讯软件下载 C语言简易通信录管理系统