下图是我写的代码,利用结构体作了一个简单的电话号码存贮输入,写的有些懵懵懂懂,不知道怎么结束输入的循环,求大佬指导下!
#include <stdio.h>
typedef struct phone
{
char name[50];
int num;
char e_mail;
}PH;
void input(PH *pphe)
{
printf("请输入姓名 电话号码 电子邮箱:\n");
scanf("%s %d %s",pphe->name,&pphe->num,pphe->e_mail);
}
void output(PH phe)
{
printf("姓名:%s\n",phe.name);
printf("电话号码:%d\n",phe.num);
printf("电子邮箱:%s\n",phe.e_mail);
}
int main(int argc,const char* argv[])
{
PH phe[128] = {0};
for(int i=0;i<128;i++)
input(&phe[i]);
for(int i=0;i<128;i++)
output(phe[i]);
return 0;
}
#include <stdio.h>
#include <string.h>
typedef struct phone
{
char name[50];
int num;
char e_mail;
}PH;
int num = 0; // 定义全局变量num,通过第一个循环决定第二个循环的次数
int input(PH *pphe)
{
printf("请输入姓名(输入Q结束):\n");
scanf("%s",pphe->name);
if(strcmp(pphe->name,"Q") == 0) // 输入Q时结束函数并返回0
return 0;
else num += 1;
printf("请输入电话号码 电子邮箱:\n");
scanf("%d %s",&pphe->num,pphe->e_mail);
return 1;
}
void output(PH phe)
{
printf("姓名:%s\n",phe.name);
printf("电话号码:%d\n",phe.num);
printf("电子邮箱:%s\n",phe.e_mail);
}
int main(int argc,const char* argv[])
{
PH phe[128] = {0};
for(int i=0;i<10086;i++)
if(!input(&phe[i])) break; // 只有输入Q时返回0,通过!使逻辑值为1,跳出循环
for(int i=0;i<num;i++) // 通过第一个循环确定了num的值
output(phe[i]);
return 0;
}
添加一个全局变量,用于计算第一个循环循环了多少遍,然后第二个循环就循环多少遍
输入姓名时判断是否等于Q,等于Q则退出函数返回0,然后再结束第一个循环
你输入循环128次,你得输入128个对应的电话信息才会结束。