c语言利用文件io实现 每隔一秒向文件1.txt写入当前系统时间,行号递增
时间: 2024-02-05 13:05:18 浏览: 471
好的,您可以使用如下的C语言代码实现:
```c
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main() {
int line_num = 1;
while (1) {
time_t now = time(NULL);
char* time_str = ctime(&now);
FILE* fp = fopen("1.txt", "a");
fprintf(fp, "%d: %s", line_num++, time_str);
fclose(fp);
sleep(1);
}
return 0;
}
```
这个程序会不断地往文件`1.txt`中写入当前系统时间和行号,每次间隔1秒。`time(NULL)`函数可以获取当前系统时间,`ctime()`函数可以将时间转换成字符串形式。程序中使用`FILE`结构体对文件进行操作,使用`fopen()`打开文件,使用`fprintf()`向文件中写入数据,使用`fclose()`关闭文件。`sleep()`函数可以让程序等待一定的时间。
相关问题
使用文件IO实现“每隔1秒向文件1.txt写入当前系统时间,行号递增
在Java中,你可以使用`FileWriter`、`BufferedWriter`以及定时任务`ScheduledExecutorService`来实现这个功能。下面是一个简单的示例:
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
public class TimeToFile {
private static final String FILE_NAME = "1.txt";
private static ScheduledExecutorService executorService;
private static int lineNumber = 1;
public static void main(String[] args) {
initExecutorService();
writeTimeToDisk();
}
private static void initExecutorService() {
executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(() -> writeTimeToDisk(), 0, 1, TimeUnit.SECONDS);
}
private static void writeTimeToDisk() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME, true))) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = dateFormat.format(new Date());
writer.write(currentTime + "\n" + lineNumber++);
writer.newLine(); // 结束这一行
} catch (IOException e) {
System.err.println("Error writing to file: " + e.getMessage());
}
}
}
```
这段代码首先初始化了一个单线程定时任务调度器,然后每过一秒就调用`writeTimeToDisk`方法。在这个方法里,它会获取当前的时间,并将其格式化为字符串,然后加上行号并写入到`1.txt`文件中,如果文件不存在,它会在追加模式下创建。每一行结束时会自动添加换行符。
使用c语言,使用文件IO实现“每隔1秒向文件1.txt写入当前系统时间,行号递增”
您可以使用以下C代码来实现每隔1秒向文件1.txt写入当前系统时间,并递增行号:
```c
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main() {
FILE *file;
int lineNum = 1;
while (1) {
// 获取当前系统时间
time_t currentTime = time(NULL);
struct tm *timeInfo = localtime(¤tTime);
char timeString[80];
strftime(timeString, sizeof(timeString), "%Y-%m-%d %H:%M:%S", timeInfo);
// 打开文件,以追加模式写入
file = fopen("1.txt", "a");
if (file == NULL) {
printf("无法打开文件.\n");
return 1;
}
// 写入时间和行号
fprintf(file, "%d: %s\n", lineNum, timeString);
// 关闭文件
fclose(file);
// 行号递增
lineNum++;
// 等待1秒
sleep(1);
}
return 0;
}
```
这段代码使用`time()`函数获取当前系统时间,并使用`localtime()`和`strftime()`函数将时间格式化为字符串。然后,它以追加模式打开文件1.txt,使用`fprintf()`将时间和行号写入文件中。之后,关闭文件并递增行号。最后,使用`sleep()`函数等待1秒,然后进入下一次循环。
请注意,这段代码将以无限循环的方式运行,您可以通过按下 `Ctrl + C` 来停止程序的运行。
阅读全文