啥情况,我今天发帖老被限制
。。,我干了啥,我只是今天勤劳了一些而已你贴子里没有外链啥的吗?
“限制”是指触发了审核吧 捞一下 昨非 发表于 2020-12-19 14:25
你贴子里没有外链啥的吗?
“限制”是指触发了审核吧
没有啊,没干啥 一世轻尘 发表于 2020-12-19 14:32
捞一下
这个是啥问题嘞,没有报错,能正常输入,最后查询的时候,没有结果
#include<winuser.inl>
#include<stdio.h>
#include <cstdlib>
#include<string.h>
//从键盘输入姓名和电话号码,用#表示结束。编程实现输入姓名,查询电话号码的功能
struct Phone_info
{
char name;
int phone_number;
}info;
int compare_string(char str1[], char str2[])
{
int i = 0;
int sign = 1;//1表示相等
do
{
if (str1 != str2)
{
sign = 0;
}
i++;
} while (str1 != '\n' && str2 != '\n' && sign != 0);
return sign;
}
int main()
{
int i = 0;
char sign;
do
{
printf("请输入姓名:");
scanf_s("%s", info.name,20);
printf("\n");
printf("请输入电话:");
scanf_s("%d", info.phone_number);
printf("\n");
printf("是否继续输入(if not,按下#键,else,按下任意键):");
scanf_s("%c", &sign); //输入scanf回车,直接把换行符给了sign,就无限循环了,所以给两次
scanf_s("%c", &sign);
i++;
} while (sign != '#');
char str;
printf("enter the name of number:");
scanf_s("%s", str, 20);
for (int j = 0; j < 10 ;j++)
{
if (compare_string(info.name,str) == 1)
{
printf("name = %s\n", info.name);
printf("phone = %d\n", info.phone_number);
}
}
return 0;
} 本帖最后由 一世轻尘 于 2020-12-19 14:52 编辑
猪猪虾 发表于 2020-12-19 14:39
这个是啥问题嘞,没有报错,能正常输入,最后查询的时候,没有结果
#include<stdio.h>
#include <cstdlib>
#include<string.h>
//从键盘输入姓名和电话号码,用#表示结束。编程实现输入姓名,查询电话号码的功能
struct Phone_info
{
char name;
int phone_number;
}info;
int main()
{
int i = 0;
char sign;
do
{
printf("请输入姓名:");
scanf("%s", info.name,20);
printf("\n");
printf("请输入电话:");
scanf("%d", info.phone_number);
printf("\n");
printf("是否继续输入(if not,按下#键,else,按下任意键):");
scanf("%c", &sign); //输入scanf回车,直接把换行符给了sign,就无限循环了,所以给两次
scanf("%c", &sign);
i++;
} while (sign != '#');
char str;
printf("enter the name of number:");
scanf("%s", str, 20);
for (int j = 0; j < 10 ;j++)
{
if (strcmp(info.name,str) == 0)
{
printf("name = %s\n", info.name);
printf("phone = %d\n", info.phone_number);
}
}
return 0;
}
函数写错了,还有直接用strcmp函数来比较就行了,我用的dev,所以里面有些地方稍微改了下 一世轻尘 发表于 2020-12-19 14:50
函数写错了,还有直接用strcmp函数来比较就行了,我用的dev,所以里面有些地方稍微改了下
不不,没写错啊,我还断点调试了一下,发现传进去的两个字符串没有'\n'。。。while停不下来 猪猪虾 发表于 2020-12-19 14:39
这个是啥问题嘞,没有报错,能正常输入,最后查询的时候,没有结果
函数do...while循环的条件,不应该是\n,而是\0 猪猪虾 发表于 2020-12-19 14:54
不不,没写错啊,我还断点调试了一下,发现传进去的两个字符串没有'\n'。。。while停不下来
字符串的结尾是\0,不是\n 本帖最后由 一世轻尘 于 2020-12-19 15:10 编辑
猪猪虾 发表于 2020-12-19 14:54
不不,没写错啊,我还断点调试了一下,发现传进去的两个字符串没有'\n'。。。while停不下来
改了之后就正常了,好吧,电话号码的问题我也没看出来,我给你问问吧 本帖最后由 jackz007 于 2020-12-19 15:24 编辑
#include<stdio.h>
struct Phone_info {
char name ;
unsigned long long phone_number ;
} info ;
int compare_string(char str1[] , char str2[])
{
int i ;
for(i = 0 ; str1 && str2 && str1 == str2 ; i ++) ;
return str1 - str2 ;
}
int main()
{
int i = 0 , j ;
char sign , str ;
for(i = 1 ; ; i ++) {
printf("请输入姓名:") ;
scanf("%s" , info . name) ;
printf("请输入电话:") ;
scanf("%I64u", & info . phone_number) ;
printf("继续输入? <y / n> : ") ;
fflush(stdin) ;
sign = getchar() ;
if(sign == 'n' || sign == 'N') break ;
}
printf("enter the name of number : ") ;
scanf("%s" , str) ;
for(j = 0 ; j < i ; j ++) {
if (! compare_string(str , info . name)) {
printf("name = %s\n", info.name) ;
printf("phone = %I64u\n", info.phone_number) ;
}
}
} 电话号码用字符串好一点
页:
[1]