c语言如何实现删除功能 - 爱问答

(爱问答)

c语言如何实现删除功能

明天就要回老家了,那边没有网,我也没有数据。

我现在还有一个学生成绩管理的删除功能不知道怎么做。

你能不能写个例子给我。


#include<stdio.h>

#include<windows.h>

#include<string.h>

void Write_in(void);     //写入

//void Variable_body(void);  //变量体

 

int main(void){

system("CLS");

system("COLOR 1D"); //蓝色加淡紫色

 

Write_in();

 

return 0;

}

/*

//后期调用

 

void Variable_body(void){

int chinese[20]; //语文成绩

int mathematice[20];//数学成绩

int English[20];//英语成绩

 

char student_name[5][11]; 

//首先能录入5名学生,每名学生名字是5个。2*5+1=11,最后还有一个字符串结束符

//每个中文字符占2个字符空间

//Write_in(student_name);//调用Variable_body函数

}

*/

void Write_in(void){

int select=0; //可以该问char类型,目的是char占用的存储空间小

int i=0;

int j=0;

int k=0;//判断修改的学号是否正确

int m=0;//判断学号不能是非数字字符

int f=0;//重复数标记

int n=0;//临时变量

int display=0;

//考虑要不要使用多层赋值

int modify=0;//修改

char student_name[5][11];//存放5个姓名

//首先能录入5名学生,每名学生名字是5个。2*5+1=11,最后还有一个字符串结束符

//每个中文字符占2个字符空间

double achieverments[5][3]; //有5名学生,3门成绩

int student_id[5]; //个学号

 

do{

printf("==========学生成绩管理系统========== ");

printf("=   1、录入                        = ");

printf("=   2、修改                        = ");

printf("=   3、删除                        = ");

printf("=   4、查询                        = ");

printf("=   5、显示所有学生成绩            = ");

printf("=   6、退出                        = ");

printf("==================================== ");

 

printf("请输入以上5个选项中的其中一条: ");

scanf("%d", &select);

 

switch(select)

{

case 1:

 

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

{ //条件判断5次

printf("请输入第%d学生姓名: ", i+1);

scanf("%s", student_name[i]);

 

do{//判断重复数

f=0;//重复标记

/********************************************************/

do{//判断用户不能有英文字符

printf("请输入%s的学号: ", student_name[i]);

if(scanf("%d", &n)!=1)//首先放入临时变量

/*

scanf("%d", &student_id[i]);

if(student_id[i]!=1)//scanf如果正常输入,则返回值是0,而非正常输入那么返回值就是1

*/

//scanf("%d", &n);

//if(n!=1)//首先放入临时变量

{

printf("输入错误,不能有非数字字符! ");

fflush(stdin);//清除标准输入缓冲区

m=1;//判断条件,重新输入

}elsem=0;//如果不是非数字,那么就是数字,所以,数据正确,按顺序跳出循环

}while(m==1);

 

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

{

if(n==student_id[j])//这样做的目的是避免重复数

{

f=1;//若有重复,跳出循环,给用户一个反馈,然后继续输入,直到数值正确为止

break;//跳出小循环,执行下面步骤

}

}//判断是否有重复学号

if(f)

printf("不能是重复的学号,请重新输入 ! ");

else

student_id[j]=n;//若没有重复数,就吧值赋给数组

}while(f);//f为0时,表示数值不重复,若f为1,表示数值重复,要求重新输入

 

/***************************************************************************************/

do{

printf("请输入%s的成绩(语文)(数学)(英语) 注意:分数不能大于120分: ", student_name[i]);

scanf("%lf %lf %lf", &achieverments[i][0], &achieverments[i][1], &achieverments[i][2]);

}while(achieverments[i][0]>120 || achieverments[i][1]>120 || achieverments[i][2]>120);

//判断用户所输入的值,不能大于120分

}//for循环输入

system("CLS"); //清屏函数

printf("成绩正在录入中。");

Sleep(1000);

printf("。");

Sleep(1000);

printf("。 ");

Sleep(1000);

system("CLS");

printf("成绩录入成功 ! ");

Sleep(2000);

break;

case 2:

system("CLS");

do{

printf("请输入要修改学生成绩的学号: ");

scanf("%d", &modify);

for(k=0; k<5; k++)

{

if(modify==student_id[k])

{

system("CLS");//清除上一条反馈

printf("(注意:无需修改的,按原来的输入) 请修改(%s)的学号: ", student_name[k]);//跟着循环开始,如果判断出学号相等,这里也会停留在相等处,从而达到同步的效果

scanf("%d", &student_id[k]);

printf("请输入%s的成绩(语文)(数学)(英语) 注意:分数不能大于120分: ", student_name[k]);

scanf("%lf %lf %lf", &achieverments[k][0], &achieverments[k][1], &achieverments[k][2]);

printf("正在修改。");

Sleep(1000);

printf("。");

Sleep(1000);

printf("。 ");

Sleep(1000);

system("CLS");

printf("修改成功,请核实 ! ");

Sleep(2000);

break;

}

}//for循环

if(k==5) //判断到第5个的时候还找不到,就说明没有,给用户一个反馈

printf("该数据库中没有此人,请重新输入 ");

}while(k==5);

break;

case 5:

printf("正在导出,请稍等。");

Sleep(1000);

printf("。");

Sleep(1000);

printf("。 ");

Sleep(2000);

system("CLS");

display=0;

 

for(display=0;display<5;display++)

{

printf("姓名:%s ", student_name[display]);

printf("学号:%d ", student_id[display]);//打印每名学生的学号

printf("语文成绩是:  %g分 数学成绩是:  %g分 英语成绩是:  %g分 总成绩:  %g分    ", 

achieverments[display][0], achieverments[display][1], achieverments[display][2],

achieverments[display][0]+achieverments[display][1]+achieverments[display][2]);//每个数组能保存三项成绩

printf("============================================================================= ");

Sleep(1000);//每延时一秒,输出一条

//printf多重打印

}//for循环输出

case 6:

system("exit");

}//switch结构

}while(select!=6);

}

//原代码

利用指针对字符串进行字符串数据重新组织,可以很方便的完成删除指针字符。参考代码如下:

#include <stdio.h>void del_chr( char *s, char ch ){    char *t=s; //目标指针先指向原串头    while( *s != '' ) //遍历字符串s    {        if ( *s != ch ) //如果当前字符不是要删除的,则保存到目标串中            *t++=*s;        s++ ; //检查下一个字符    }    *t=''; //置目标串结束符。}void main(){    char str[]="***abcde***fghi***" ;    del_chr(str, '*' );    printf("str=【%s】 ", str );}


一、创建文件:

c语言中创建文件,使用fopen函数,同时指定为只写即可。 

参考代码如下:

/*    函数功能: 创建文件名为s的文件。    返回值:         -1 参数错误        0 创建成功        1 文件已存在        2 创建失败*/int create_file(char *s){    FILE *fp;    if(s==NULL||s[0]=='') return -1;//参数为空,即错误参数。    fp= fopen(s, "r");//以只读方式打开    if(fp)//打开成功,表示文件已经存在。    {        fclose(fp);//关闭文件        return 1;//返回文件已存在。     }    fp= fopen(s, "w");//以只写方式创建文件。    if(fp == NULL)         return 2;//创建失败。    fclose(fp);//关闭文件。    return 0;//创建成功。}

二、删除文件:

c语言中,有专门的删除文件函数remove。

1、头文件:stdio.h

2、声明:int remove(const char* filename);

3、功能:删除文件名为filename的文件。 

4、返回值:删除成功,返回0.否则返回-1.

5、示例代码:


#include <stdio.h>int main(){    char s[100];    int ret;    scanf("%s",s);//输入文件名。    ret = remove(s);//删除文件    if(ret==0)//根据结果给出相应提示        printf("删除文件成功 ");    else        printf("删除文件失败 ");    return 0;}


相关标签:c语言

下一篇:caxa制造工程师没有自定义选项

上一篇:为什么在PROTEUS中我设置一个高电平,但是那个引脚会不断变化

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?