创建一个文件test.txt,每隔1秒向文件里写入一行数据(使用文件IO编写),使用C语言
时间: 2024-05-24 10:11:39 浏览: 157
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main()
{
FILE *fp;
time_t now;
char *time_str;
fp = fopen("test.txt", "w");
if (fp == NULL) {
printf("Error opening file!\n");
exit(1);
}
while (1) {
now = time(NULL);
time_str = ctime(&now);
fprintf(fp, "%s", time_str);
fflush(fp);
sleep(1);
}
fclose(fp);
return 0;
}
相关问题
在D盘根目录下,新建一个”test.txt”文件,在文件中写入如下内容: “Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念...” 利用java程序读取”test.txt”里面的内容,并在控制台打印。复制“test.txt”为”test1.txt”。
在 D 盘根目录下新建一个 "test.txt" 文件,可以使用如下代码:
```
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
// D 盘根目录
String rootPath = "D:/";
// 文件名
String fileName = "test.txt";
// 创建文件对象
File file = new File(rootPath + fileName);
// 如果文件不存在,就创建文件
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
// 写入文件内容
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
bw.write("Java是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念...");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
利用 Java 程序读取 "test.txt" 里面的内容,并在控制台打印,可以使用如下代码:
```
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
// D 盘根目录
String rootPath = "D:/";
// 文件名
String fileName = "test.txt";
// 创建文件对象
File file = new File(rootPath + fileName);
// 读取文件内容
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
复制 "test.txt" 为 "
c语言标准io,将txt文件中某行的某个int类型数据,更改为其他的int类型数据
在C语言中,使用标准IO库可以比较方便地实现将文本文件中某行的某个int类型数据更改为其他的int类型数据。下面是一个示例代码,可以实现将文件中第n行的第m个int类型数据更改为其他的int类型数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LEN 1024
int main()
{
char* filename = "test.txt";
int line_num = 3;
int int_pos = 2; // 第3行的第3个int类型数据
int new_int = 123;
FILE* fp = fopen(filename, "r+");
if (fp == NULL) {
printf("Failed to open file %s\n", filename);
return 1;
}
char line[MAX_LINE_LEN];
int current_line = 0;
while (fgets(line, MAX_LINE_LEN, fp) != NULL) {
current_line++;
if (current_line == line_num) {
char* token = strtok(line, " ");
int token_count = 0;
while (token != NULL) {
token_count++;
if (token_count == int_pos) {
int int_value = atoi(token);
int value_len = strlen(token);
int int_pos_in_line = (int)(token - line);
fseek(fp, -(strlen(line) - int_pos_in_line), SEEK_CUR);
fprintf(fp, "%d", new_int);
int new_value_len = snprintf(NULL, 0, "%d", new_int);
if (new_value_len > value_len) {
int n_shift = new_value_len - value_len;
char buffer[MAX_LINE_LEN];
while (fgets(buffer, MAX_LINE_LEN, fp) != NULL) {
fseek(fp, -strlen(buffer), SEEK_CUR);
fputs(buffer, fp);
}
ftruncate(fileno(fp), ftell(fp) - n_shift);
}
break;
}
token = strtok(NULL, " ");
}
break;
}
}
if (ferror(fp)) {
printf("Error occurred while reading file %s\n", filename);
fclose(fp);
return 1;
}
fclose(fp);
printf("File %s has been updated.\n", filename);
return 0;
}
```
在以上示例代码中,我们使用了以下标准IO库函数:
- fopen:打开文件。
- fgets:逐行读取文件内容。
- strtok:分隔字符串。
- atoi:将字符串转换为int类型数据。
- fprintf:写入新的int类型数据。
- ftruncate:截断文件大小。
在代码中,我们首先打开文件,并使用fgets函数逐行读取文件内容。当读到需要修改的行时,我们使用strtok函数分隔字符串,并找到需要修改的int类型数据所在的位置。接着,我们使用fprintf函数将新的int类型数据写入到文件中,并使用ftruncate函数截断文件大小(如果新的int类型数据的位数比原来的int类型数据位数多)。最后,我们关闭文件并输出更新成功的信息。
需要注意的是,以上示例代码中并没有处理文件中行末的换行符,如果需要更精细的处理可以在代码中加以修改。同时,如果文件中存在非法的int类型数据,以上代码可能会出现错误。
阅读全文