鱼C论坛

 找回密码
 立即注册
查看: 2877|回复: 7

写的查电话号码,但是总是跳过一些步骤呢?

[复制链接]
发表于 2012-4-6 00:08:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 sc3297 于 2012-4-6 10:40 编辑

[i][i][i][i][i][i]
#include <stdio.h>
#include <string.h>
void main()
{
struct
{
char name[20]
char num[11];
}x[20];
int s,i;
char j;
char a[20];
for(i=0;i<20;i++)
{
printf("输入姓名:\n");
scanf("%s",x[i].name); //为什么我编辑的时候是 x[i].name 保存过后又变成了x.name呢??? 网站的问题?
printf("输入电话号码:\n");
scanf("%s",x[i].num);
printf("是否继续存入新的联系薄:Y为是|任意键为否\n");
getchar();
j=getchar(); 
if(j!='Y'&&j!='y')
{
break;
}
}
do
{
printf("输入要查询的姓名:\n");
getchar();
gets(a);
s=0;
for(i=0;i<20;i++)
{
if(strcmp(a,x[i].name)==0)
{
printf("姓名: %s\n",x[i].name);
printf("号码:%s\n",x[i].num);
s=1;
break;
}
}
if(s==0)
{
printf("没有你要查找的电话号码!!!");
}
printf("还要继续查找吗?\n");
printf("输入Y继续,输入任意键退出\n");
getchar();
j=getchar(); // 这一句输入后 不执行赋值了 直接 j='10'; 搞不清楚为什么 求解释
if(j!='Y'&&j!='y')
{
s=0;

}else s=1;
}while(s);
}

[/i][/i][/i][/i][/i][/i]
......用代码复制好了 , 用文本 [i]不显示

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-6 08:53:22 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-4-6 09:11 编辑

新手在看看!~

我的vc6.0 x.name 和x.num 都编译不过 要改成 x->name x->num 才能编译过!~
我前面输入的是   ( 姓名,号码)     a ,1     b,2    c,3   d ,4   
然后查询的姓名我输入的是'a' 这里调试了下   
if(strcmp(a,x.name)==0)
这里对比的是 输入的'a'  和最后一次输入的 'd'   做的对比 是不是这里找错对象了!~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-6 10:41:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-6 14:51:42 | 显示全部楼层
跟你修改了一下,可以输入带空格的名称
#include <stdio.h>
#include <string.h>
void main()
{
struct dianhuaben
{
char name[20];
char num[11];
}x[20];

int s,i;
char j;
char a[20];
for(i=0;i<20;i++)
{
printf("输入姓名:\n");
gets(x[i].name);
printf("输入电话号码:\n");
gets(x[i].num);
printf("是否继续存入新的联系薄:Y为是|任意键为否\n");
j=getchar(); 
getchar(); //去掉'10'
if(j!='Y'&&j!='y')
{
break;
}

}
do
{
printf("输入要查询的姓名:\n");
gets(a);
s=0;
for(i=0;i<20;i++)
{
if(strcmp(a,x[i].name)==0)
{
printf("姓名: %s\n",x[i].name);
printf("号码:%s\n",x[i].num);
s=1;
break;
}
}
if(s==0)
{
printf("没有你要查找的电话号码!!!\n");
}

printf("还要继续查找吗?\n");
printf("输入Y继续,输入任意键退出\n");
j=getchar(); 
getchar(); //去掉'10' 
if(j!='Y'&&j!='y')
{
s=0; 
}
else 
{
s=1;
}
}while(s);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-6 15:45:32 | 显示全部楼层
hkcx3000 发表于 2012-4-6 14:51
跟你修改了一下,可以输入带空格的名称

多谢........但是我还是没明白他为什么会不执行赋值啊.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-6 16:44:25 | 显示全部楼层
主要就是你的那些getchar()用的不太好,仔细对比一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-6 16:48:38 | 显示全部楼层
现在明白了 scanf不读入回车 直接把回车给后面的getchar了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-6 16:57:40 | 显示全部楼层
要不干脆就不用getchar(),用gets()
#include <stdio.h>
#include <string.h>
void main()
{
struct dianhuaben
{
char name[20];
char num[11];
}x[20];
char jj[1];
int s,i;
char *j=jj;
char a[20];
for(i=0;i<20;i++)
{
printf("输入姓名:\n");
gets(x[i].name);
printf("输入电话号码:\n");
gets(x[i].num);
printf("是否继续存入新的联系薄:Y为是|任意键为否\n");
gets(j);
// j=getchar(); 
// getchar(); //去掉'10'
if((*j)!='Y'&&(*j)!='y')
{
break;
}

}
do
{
printf("输入要查询的姓名:\n");
gets(a);
s=0;
for(i=0;i<20;i++)
{
if(strcmp(a,x[i].name)==0)
{
printf("姓名: %s\n",x[i].name);
printf("号码:%s\n",x[i].num);
s=1;
break;
}
}
if(s==0)
{
printf("没有你要查找的电话号码!!!\n");
}

printf("还要继续查找吗?\n");
printf("输入Y继续,输入任意键退出\n");
gets(j);
//j=getchar(); 
//getchar(); //去掉'10' 
if((*j)!='Y'&&(*j)!='y')
{
s=0; 
}
else 
{
s=1;
}
}while(s);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 09:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表