怎么输入Q之后结束循环(简单的结构体电话簿。)

下图是我写的代码,利用结构体作了一个简单的电话号码存贮输入,写的有些懵懵懂懂,不知道怎么结束输入的循环,求大佬指导下!

#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个对应的电话信息才会结束。