CC++如何清除一行显示的数据

CC++如何清除一行显示的数据,第1张

调用Windows API函数进行清屏

#include <stdio.h>

#include <windows.h>

int main(void)

{

int i = 0

while (i <100) {

system("clr") //清除屏幕以前显视的内容

printf("%d", i++)

Sleep(1000) //隔 1秒

}

return 0

}

可以结贴了。

你平时应该有这样的经历,打开一个.txt格式的小说,在里面删除几个字,系统反应却很慢,这是为什么呢?因为文件里的内容都是在硬盘上按顺序一个字节挨着一个字节摆放的,读取文件的时候,会从文件首地址一直读到文件结束标记“-1”。如果能够直接把文件里面的几个字节删掉,那么下次这个文件怎么读呢?怎么区分中间那几个字节被删掉了呢?所以对于这些简单的文件来说,要想直接删除里面的内容是不可能的。

一般有两个方法实现这个功能:

1.把要保留的内容写到另一个文件中,要删掉的内容就不用写了。

2.把要保留的内容存储到一个字符串变量中,要删掉的内容不用存储,最后把这个字符串再写回到原文件中覆盖原来的内容。

例程:

#include<stdio.h>

struct data

{

    int bianhao

    char fenlei[10]

    char ming[12]

    int shijian[3]

    float jiage

}

void del(int num){//定义删除指定编号的内容的函数 

    FILE *f1// *** 作的文件 

    long length//文件总长度 

    char *f2//用于记录要保存的内容 

    char s[100]//用于保存每次读取的一行内容 

    int n//用于存储编号 

    f1=fopen("data.txt","r")//以读的方式打开文件 

    fseek(f1,0,2)//文件指针移到文件尾 

    length=ftell(f1)//取得文件长度 

    f2=(char *)malloc(sizeof(char)*length)//给f2分配文件长度的空间 

    *f2=0//使得f2字符串的长度初始为0 

       rewind(f1)//文件指针回到文件头 

    while(ftell(f1)<length-3){//当文件没有结束时就依次读取文件的每一行 

        fgets(s,100,f1)//读取一行信息 

        n=atoi(s)//从读取的信息取得编号 

        if(n==num) continue//如果编号是要删除的编号,就不用保存这一行信息了 

        strcat(f2,s)//保存读取到的这一行信息 

    }

       fclose(f1)//关闭文件 

    f1=fopen("data.txt","w")//重新以写的方式打开文件 

    fputs(f2,f1)//把保存的信息重新存储到文件当中 

    fclose(f1)//关闭文件 

}

int main(){

    del(1) //调用上面定义的函数删除指定编号的内容 

    del(3) //参数为编号 

    system("pause")//暂停一下 

}


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

原文地址:https://54852.com/sjk/10029163.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存