| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5167 人关注过本帖
标题:无法实现按ctrl + c 停止 ,再次运行该程序,继续之前的行号,往里面写下时 ...
取消只看楼主 加入收藏
Juhe
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-2-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
无法实现按ctrl + c 停止 ,再次运行该程序,继续之前的行号,往里面写下时间
/*
1: 编写一个程序,每次运行该程序每隔1秒就往同一个文件中写入当前的时间
        要求有行号
            1  Sat Jan 30 00:33:36 PST 2016
            2  Sat Jan 30 00:33:37 PST 2016
            3  Sat Jan 30 00:33:38 PST 2016
        按ctrl + c 停止
        再次运行该程序,继续之前的行号,往里面写下时间
            4  Sat Jan 30 00:40:38 PST 2016   
            5  Sat Jan 30 00:40:39 PST 2016   

*/

# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# include <string.h>

time_t result;
char * data ;
FILE*fp;
FILE*lfp;
int count;
char buf [100];
//char lbuf [10];
int main (void)
{
   
    fp = fopen ("./a.txt","a");
    if ( fp == NULL)
    {
        perror ("fopen failed");
        return -1;
    }
   
    lfp = fopen ("./lin.txt","a+");
    if (lfp == NULL)
    {
        perror ("fopen failed");
        return -1;
    }

    lfp = freopen("./lin", "w+", lfp);
   
    //printf ("%d\n",count);
    while (1)
    {  
        //bzero (buf,100);//清空buf
        count++;
        result = time (NULL);
        data = asctime( localtime(&result));
        sprintf(buf,"%d.%s",count,data);
        fwrite (buf,strlen(buf),1,fp);//将buf里的写入fp的文件里
        fprintf(lfp, "%d\n", count);
        printf ("%s",buf);
        fseek(lfp, 0 , SEEK_SET);
        fflush (lfp);
        fflush (fp);//强退还能将buf里的存到fp的文件里
        sleep (1);
    }
   
    exit(0);
}
搜索更多相关主题的帖子: include 
2016-02-03 20:44
Juhe
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-2-3
收藏
得分:0 
回复 2楼 TonyDeng
就是要ctrl+c强退后,再次则行要接上强退前的序号
2016-02-03 20:59
Juhe
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-2-3
收藏
得分:0 
回复 5楼 TonyDeng
其实不一定要处理ctri+c 可以把序号写入另一个文件“lin”中,在利用freopen重新指定到文件
2016-02-03 21:25
Juhe
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-2-3
收藏
得分:0 
回复 10楼 拉链
是啊,忘了把文件里的内容重新读出来了,改过后的
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# include <string.h>

time_t result;
char * data ;
FILE*fp;
FILE*lfp;
int count;
char buf [100];
char lbuf [10];
int main (void)
{
   
    fp = fopen ("./a.txt","a");
    if ( fp == NULL)
    {
        perror ("fopen failed");
        return -1;
    }
   
    lfp = fopen ("./lin","a+");
    if (lfp == NULL)
    {
        perror ("fopen failed");
        return -1;
    }

    fread (lbuf,5,2,lfp);//将lfp文件的内容读到buf
    count = atoi(lbuf);//把buf中的字符转换成整数
    lfp = freopen("./lin", "w", lfp);
    while (1)
    {  
        //bzero (buf,100);//清空buf
        count++;
        result = time (NULL);
        data = asctime( localtime(&result));
        sprintf(buf,"%d.%s",count,data);
        fwrite (buf,strlen(buf),1,fp);//将buf里的写入fp的文件里
        fprintf(lfp, "%d\n", count);
        printf ("%s",buf);
        fseek(lfp, 0 , SEEK_SET);
        fflush (lfp);
        fflush (fp);//强退还能将buf里的存到fp的文件里
        sleep (1);
    }
   
    exit(0);
}
2016-02-04 11:43
快速回复:无法实现按ctrl + c 停止 ,再次运行该程序,继续之前的行号,往里面写 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030272 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved