c语言中的getchar如何使用

c语言中的getchar如何使用,第1张

getchar的两点总结:

1getchar是以行为单位进行存取的。

当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D,

那么只有当最后一个输入字符为换行符'\n'(也可以是文件结束符EOF,EOF将在后面讨论时, getchar才会停止执行,整个程序将会往下执行。

譬如下面程序段:

while((c = getchar()) != EOF){ putchar(c);}

执行程序,输入:abc,

然后回车。

则程序就会去执行puchar(c),

然后输出abc,

这个地方不要忘了,系统输出的还有一个回车。

然后可以继续输入,再次遇到换行符的时候,程序又会把那一行的输入的字符输出在终端上。

对于getchar,肯定很多初学的朋友会问,getchar不是以字符为单位读取的吗?那么,

既然我输入了第一个字符a,

肯定满足while循环(c = getchar()) != EOF的条件阿,

那么应该执行putchar(c)在终端输出一个字符a。不错,我在用getchar的时候也是一直这么想的,但是程序就偏偏不着样执行,而是必需读到一个换行符或者文件结束符EOF才进行一次输出。

2getchar()的返回值一般情况下是字符,但也可能是负值,

即返回EOF。

getchar 由宏实现:#define getchar() 。

getchar(stdin)语句功能:getchar有一个int型的返回值,当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。

当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符,getchar函数的返回值是用户输入的第一个字符的ASCII码。

如出错返回-1,且将用户输入的字符回显到屏幕,如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。

也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。

示例:

#include<stdioh>

void main()

{

char c;//定义一个字符

printf("input a character\n");

c=getchar();  //从键盘获取一个字符

putchar(c);//输出字符

}

扩展资料:

getchar

getchar由宏实现:#define getchar() getc(stdin)。getchar有一个int型的返回值。当程序调用getchar时程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。

直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的字符的ASCII码,若文件结尾(End-Of-File)则返回-1(EOF),且将用户输入的字符回显到屏幕。

如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,才等待用户按键。

getch

getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCⅡ码,出错返回-1。

输入的字符不会回显在屏幕上getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行。

getche

这个函数与前两上类似,功能也相近,都是输入一个字符,返回值同样是输入字符的ASCII码,但不同的是,此函数在输入后立即从控制台取字符,不以回车为结束(带回显)。

参考资料:

getchar()百度百科

#include "stdioh"

#include "stringh"

void deleteChar(char a,char c)//从特定字符串中删除特定字符

{

   int i; char d=NULL;

   if((d=strchr(a,c))!=NULL)//找到这个字符,从后一位向前移位,将其覆盖,达到删除的目的

   {

        for(i=0;(d+i)!=0;i++)

         (d+i)=(d+i+1);

     }

}

int main()

{

   char Str1[100]={0};

   char Char_Check;

   int i;

   gets(Str1);

   scanf("%c",&Char_Check);

   for(i=0;i<strlen(Str1);i++)//一次只能删除一个特定字符,循环删除,最多循环字符串最大长度

        deleteChar(Str1,Char_Check);

    puts(Str1);

}

运行结果:

当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止。当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符。

getchar函数的返回值是用户输入的字符的ASCII码,若文件结尾则返回-1(EOF),且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。

也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,才等待用户按键。

扩展资料 :

1、getchar

getchar由宏实现:#define getchar() getc(stdin)。getchar有一个int型的返回值。当程序调用getchar时程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中)。

当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的字符的ASCII码,若文件结尾(End-Of-File)则返回-1(EOF),且将用户输入的字符回显到屏幕。

如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,才等待用户按键。

2、getch

getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCⅡ码,出错返回-1。

输入的字符不会回显在屏幕上getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行。

这个版本忽略了个重点,getch()是非缓冲输入函数,就是不能用getch()来接受缓冲区已存在的字符,如以下C++程序段,运行时如果输入1 2 3 a时必须用getchar()才能在后面程序获得正常输入,即使先前已经恢复流了,此处用getch()是万万不行的。

3、getche

这个函数与前两上类似,功能也相近,都是输入一个字符,返回值同样是输入字符的ASCII码,但不同的是,此函数在输入后立即从控制台取字符,不以回车为结束(带回显)。

参考资料来源:百度百科-getchar()

(1)while((ch=getchar())!='\n')

使用getchar函数从键盘获取一次按键输入(只是按下一个按钮),如果按的键不是回车(回车键的输入即为'\n'),继续执行循环体内代码。然后回到该行代码,获取下一个按键输入,一直循环下去,直到按下回车为止。总的效果等同于输入任意字符串,以回车键结束。

(2)if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

在ASCII码表中,基本字符通过ASCII码进行编码。字母a到z的ASCII码范围对应为97~122,字母A到Z则对应65~90。所以当输入字符的ASCII码在上述范围之内时,则输入的字符为大小写英文字母。字符的比较即ASCII码的比较。若输入其它字符,直接输出不进行处理。

&&代表逻辑与,表示两侧的条件同真时为真,否则为假;||代表逻辑或,表示两侧的条件同假时为假,否则为真。例如,必须当字符大于等于'a'并且小于等于'z'时,字符才是小写字母;若字符是小写字母,或者字符是大写字母,则字符是英文字母。

(3)ch+=3

直接对字符的ASCII码进行 *** 作,即可实现字符的转换。这里对字符加3,就实现了字符移位的运算(ASCII码表中小写字母是按照实际顺序排列的,大写字母同理)

(4)if(ch>'z'||(ch>'Z'&&ch<='Z'+4)) ch-=26

if条件表示对移位后的ch进行判断,若超出字母表范围,因为大小写字母各有26个,只需对ASCII码减26就可以回到字母表开头位置,原理类似于求余运算。

#include<stdioh>

void main()

{int h,m,s,v;

printf("请输入一个需求转化的数:");

scanf("%d",&v);

printf("\n");

h=v/3600;

m=(v-h3600)/60;

s=v-h3600-m60;

printf("转化后为%d小时%d分钟%d秒\n",h,m,s);

printf("谢谢使用!请按任意键退出!\n");

getchar();

}

头文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include "stdioh"

#include "stringh"

#include "malloch"

#define LEN sizeof(struct message_student) /一个结构体数组元素的长度/

#define numsubs 5 /学科数目/

typedef struct message_student /结构体定义/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus; /学生数目/

extern student pointer; /指向结构体数组/

extern int lens;

int menu_select(); /函数声明/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include "headh"

int menu_select()

{

char c;

printf("\n\n");

printf(" | 1 增加学生记录 5统计信息 |\n");

printf(" | 2 查询学生记录 6打开文件 |\n");

printf(" | 3 修改学生记录 7保存文件 |\n");

printf(" | 4 学生纪录排序 8显示记录 |\n");

printf(" | 0退出系统 |\n");

printf("\n\n");

printf("请选择(0-8):");

c=getchar();

getchar();

return (c-'0');

}

#include "headh"

int findrecord(student stud[]) /查找信息/

{

char str[2];

int i,num;

if(numstus==0)

{

printf("没有可被查找的记录\n");

return -1;

}

else

{

printf("以何种方式查找?\n1学号\t2姓名\t3名次\n");

gets(str);

if(str[0]=='1') /按学号查找/

{

printf("请输入学号:");

gets(str);

for(i=0;i<=numstus;i++)

if(strcmp(str,stud[i]number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='2') /按姓名查找/

{

printf("请输入姓名:");

gets(str);

for(i=0;i<=numstus;i++)

if(strcmp(str,stud[i]name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='3') /按名次查找/

{

printf("请输入名次:");

scanf("%d",&num);

getchar();

for(i=0;i<=numstus;i++)

if(num==stud[i]index)

{

display(stud,i,i);

break;

}

else continue;

}

if(i>numstus)

{

printf("没有查找所要的信息。\n");

return -1;

}

return i;

}

}

#include"headh"

int openfile(student stu[])

{

int i=0,j;

FILE fp;

char filename[20],str[2];

if(numstus!=0)

{

printf("已经有记录存在,是否保存(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(stu);

}

printf("请输入文件名:");

gets(filename);

numstus=0;

if((fp=fopen(filename,"rb+"))==NULL)

{

printf("无法打开该文件\n");

return(-1);

}

fscanf(fp,"%d",&numstus);

fgetc(fp);

while(i<numstus)

{

fscanf(fp,"%s",stu[i]number);

fscanf(fp,"%s",stu[i]name);

fscanf(fp,"%s",stu[i]sex);

for(j=0;j<numsubs;j++)

fscanf(fp,"%f",&stu[i]subject[j]);

fscanf(fp,"%f",&stu[i]score);

fscanf(fp,"%f",&stu[i]average);

fscanf(fp,"%d",&stu[i]index);

i++;

}

fclose(fp);

printf("文件读取成功\n");

printf("是否显示纪录(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

display(stu,0,numstus-1);

return(0);

}

#include "headh"

void sort(student stud[])

{

int i,j=0;

char str[5];

student p;

p=stud;

if(numstus==0)

{

printf("没有可供查询的记录!");

}

while(1)

{

for(i=0;;i++)

{

printf(" 请输入查询方式:");

printf("(直接输入回车则结束查询 *** 作)\n");

printf("1按照学号\t");

printf("2按照姓名\t");

printf("3按照名次\n");

gets(str);

if(strlen(str)==0) break;

if(str[0]=='1')

{

printf("请输入排序次序:\n");

printf("1升序排列\t");

printf("2降序排列\n");

gets(str);

if(str[0]=='1')

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]=='2')

{

printf("请输入排序次序:\n");

printf("1升序排列\t");

printf("2降序排列\n");

gets(str);

if(str[0]=='1')

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]=='3')

{

printf("请输入排序次序:\n");

printf("1升序排列\t");

printf("2降序排列\n");

gets(str);

if(str[0]=='1')

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf("请输入1~3");

printf("是否退出排序(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(strcmp(stud[j+1]number,stud[j]number)>0)

{

temp=(p+j);

(p+j)=(p+j+1);

(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(strcmp(stud[j]number,stud[j+1]number)>0)

{

temp=(p+j);

(p+j)=(p+j+1);

(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(strcmp(stud[j+1]name,stud[j]name)>0)

{

temp=(p+j);

(p+j)=(p+j+1);

(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(strcmp(stud[j]name,stud[j+1]name)>0)

{

temp=(p+j);

(p+j)=(p+j+1);

(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(stud[j+1]index>stud[j]index)

{

temp=(p+j);

(p+j)=(p+j+1);

(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(stud[j]index>stud[j+1]index)

{

temp=(p+j);

(p+j)=(p+j+1);

(p+j+1)=temp;

}

}

}

#include"headh"

void statistic(student stud[]) /新增功能,输出统计信息/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf("没有可被查找的记录\n");

else

{

while(1)

{

printf("下面将统计考试成绩\n");

printf("请选择你要统计哪科的成绩 1A\t2B\t3C\t4D\t5E\n");

c1=getchar();

printf("\t一共有个%d记录\n",numstus); /总共记录数/

switch(c1)

{

case '1':

for(i=0;i<numstus;i++) /循环输入判断/

{

sum+=stud[i]subject[0];

if(stud[k]subject[0]>stud[i]subject[0]) k=i;

if(stud[j]subject[0]<stud[i]subject[0]) j=i;

}

average[0]=sum/numstus;

printf("\t科目A的最高分:\n"); /最高分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[0]);

printf("\t科目A的最低分是:\n"); /最低分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[0]);

printf("\t科目A的平均分是 %52f\n",average[0]); /平均分/

break;

case '2':

for(i=0;i<numstus;i++) /循环输入判断/

{

sum+=stud[i]subject[1];

if(stud[k]subject[1]>stud[i]subject[1]) k=i;

if(stud[j]subject[1]<stud[i]subject[1]) j=i;

}

average[1]=sum/numstus;

printf("\t科目B的最高分:\n"); /最高分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[1]);

printf("\t科目B的最低分是:\n"); /最低分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[1]);

printf("\t科目B的平均分是 %52f\n",average[1]); /平均分/

break;

case '3':

for(i=0;i<numstus;i++) /循环输入判断/

{

sum+=stud[i]subject[2];

if(stud[k]subject[2]>stud[i]subject[2]) k=i;

if(stud[j]subject[2]<stud[i]subject[2]) j=i;

}

average[2]=sum/numstus;

printf("\t科目C的最高分:\n"); /最高分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[2]);

printf("\t科目C的最低分是:\n"); /最低分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[2]);

printf("\t科目C的平均分是 %52f\n",average[2]); /平均分/

break;

case '4':

for(i=0;i<numstus;i++) /循环输入判断/

{

sum+=stud[i]subject[3];

if(stud[k]subject[3]>stud[i]subject[3]) k=i;

if(stud[j]subject[3]<stud[i]subject[3]) j=i;

}

average[3]=sum/numstus;

printf("\t科目D的最高分:\n"); /最高分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[3]);

printf("\t科目D的最低分是:\n"); /最低分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[3]);

printf("\t科目D的平均分是 %52f\n",average[3]); /平均分/

break;

case '5':

for(i=0;i<numstus;i++) /循环输入判断/

{

sum+=stud[i]subject[4];

if(stud[k]subject[4]>stud[i]subject[4]) k=i;

if(stud[j]subject[4]<stud[i]subject[4]) j=i;

}

average[4]=sum/numstus;

printf("\t科目E的最高分:\n"); /最高分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[4]);

printf("\t科目E的最低分是:\n"); /最低分/

printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[4]);

printf("\t科目E的平均分是 %52f\n",average[4]); /平均分/

break;

default:printf("输入错误!请输入1~5之间的数\n");

}

sum=0;

getchar();

printf("是否继续进行统计(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') ;

else break;

}

}

}

#include"headh"

int writetotext(student stud[]) /将所有记录写入文件/

{

int i=0,j;

FILE fp;

char filename[20];

printf("输入文件名称:");

gets(filename);

fp=fopen(filename,"w");

fprintf(fp,"%d\n",numstus);

while(i<numstus)

{

fprintf(fp,"%s %s %s ",stud[i]number,stud[i]name,stud[i]sex);

for(j=0;j<numsubs;j++)

fprintf(fp,"%f ",stud[i]subject[j]);

fprintf(fp,"%f %f %d ",stud[i]score,stud[i]average,stud[i]index);

i++;

}

fclose(fp);

printf("已成功存储!\n");

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include"headh"

void welcome()

{

printf("\t\n");

printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");

printf("\t\n");

}

void showtable()

{

printf("---------------------------------------------------------------------------------------\n");

printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");

printf("---------------------------------------------------------------------------------------\n");

}

void display(student stud[],int n1,int n2)

{

int i;

showtable(); /显示表头/

for(i=n1;i<=n2;i++)

printf("%s\t%s\t%s\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%2f\t%d\t\n",stud[i]number,stud[i]name,stud[i]sex,stud[i]subject[0],stud[i]subject[1],stud[i]subject[2],stud[i]subject[3],stud[i]subject[4],stud[i]score,stud[i]average,stud[i]index);

/通过循环输出数据/

}

void display1()

{

printf("\t\t本系统由计应精英一组亲情制作\n\n");

printf("\t\t制作人员列表: (按比划)\n");

printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");

printf("\n\n");

getchar();

}

#include"headh"

#include<stringh>

void amendrecord(student stud[])

{

char str[5]; /供用户输入/

int i=-1,j;

if(numstus==0) /没有记录返回/

printf("没有可供修改的记录!");

while(i<0)

{

i=findrecord(stud);

if(i>=0)

{

printf("要删除这个学生的信息吗(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

deleterecord(stud,i);

count(stud);

}

else

{

printf("确定要修改这个学生的信息吗(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

printf("下面请重新输入学生的信息:\n");

printf("请输入学号:");

gets(stud[i]number);

printf("请输入姓名:");

gets(stud[i]name);

printf("请输入性别(男/女 1/0):");

gets(str);

if(str[0]=='0')

strcpy(stud[i]sex,"女");

else

strcpy(stud[i]sex,"男");

stud[i]score=0;

printf("请按顺序输入成绩:");

for(j=0;j<numsubs;j++)

{

scanf("%f",&stud[i]subject[j]);

stud[i]score+=stud[i]subject[j];

}

getchar();

stud[i]average=stud[i]score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf("是否继续进行其他修改(y/n)\n");

gets(str);

if(str[0]=='y'||str[0]=='Y')

i=-1;

else i=1;

}

}

void deleterecord(student stu[],int i) /删除信息/

{

int j;

while(i>=0)

{

for(j=i;j<numstus;j++)

stu[j]=stu[j+1];

numstus--;

printf("删除成功!\n");

}

}

void count(student stud[])

{

int i,j;

for(i=0;i<numstus;i++)

{

stud[i]index=1;

for(j=0;j<numstus;j++)

if(stud[j]score>stud[i]score)

stud[i]index++;

}

}

#include "headh"

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf("已有记录存在是否覆盖(y/n)\n");

gets(str);

if(str[0]=='Y'||str[0]=='y')

i=0;

else i=numstus;

}

printf("请输入增加的学生信息条目数:");

scanf("%d",&num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstus>lens)

{

lens+=50;

pointer=(student )realloc(pointer,lensLEN);

}

printf("请输入学生信息:\n");

for(;i<numstus;i++)

{

getchar();

printf("请输入学号:");

gets(pointer[i]number);

printf("请输入姓名:");

gets(pointer[i]name);

printf("请输入性别(男/女 1/0):");

gets(pointer[i]sex);

if(pointer[i]sex[0]=='0') strcpy(pointer[i]sex,"女");

else strcpy(pointer[i]sex,"男");

printf("请输入各科成绩:(按ABCDE的顺序):");

stud[i]score=0;

for(j=0;j<numsubs;j++)

{

scanf("%f",&stud[i]subject[j]); /计算总分/

stud[i]score+=stud[i]subject[j];

}

stud[i]average=stud[i]score/numsubs; /计算平均分/

}

count(stud); /附名次/

display(stud,0,numstus-1);

getchar();

}#include "headh"

int numstus;

int lens;

student pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student )malloc(lensLEN); /分配内存/

numstus=0;

welcome(); /欢迎界面/

while(i>0)

{

i=menu_select(); /控制菜单/

switch(i)

{

case 1:addrecord(pointer);break; /增加学生信息/

case 2:findrecord(pointer);break; /查询学生信息/

case 3:amendrecord(pointer);break; /修改学生信息/

case 4:sort(pointer);break; /学生信息排序/

case 5:statistic(pointer);break; /统计信息/

case 6:openfile(pointer);break; /打开文件/

case 7:writetotext(pointer);break; /保存文件/

case 8:display(pointer,0,numstus-1);break; /显示记录/

case 0:

if(numstus!=0) printf("是否保存当前记录(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(pointer);

i=-1;break; /退出系统/

default:printf("请输入数字0~8:\n");i=1; /输入错误/

}

}

printf("\t\t欢迎再次使用本系统。\n\n");

display1();

}

自己一改就能用,给我加分哈!

int CreatBiTree(BiTree T) //函数创建一个二叉树

{

char ch;

ch = getchar();

if(ch == '#')

(T) = NULL; //输入#代表该结点为空

else

{

(T) = (BiTree)malloc(sizeof(BitNode)); //分配一个空间生成一个新的子树结点

(T)->data = ch; //将值赋给该结点

CreatBiTree(&(T)->lchilde); //递归调用进入左子树创建

CreatBiTree(&(T)->rchilde); //递归调用进入右子树创建

}

return 1;

}

有疑问请追问

以上就是关于c语言中的getchar如何使用全部的内容,包括:c语言中的getchar如何使用、c语言中getchar()的用法、用C语言编写一完整源程序,从键盘输入一个字符串Str1,在新的一行输入一个待检测字符Char_Che等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10111204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存