在C语言中,如何利用InputStream和OutputStream类来有效地将Long类型的大型整数写入文本文件,并之后从该文件中正确地读取这些数值?
时间: 2024-11-27 20:11:03 浏览: 28
在C语言中,通常不会直接使用`InputStream`和`OutputStream`类,因为这属于面向对象的Java特性,而C语言是基于流的I/O系统,使用的是标准库函数如`fopen`, `fwrite`, 和 `fread`等。
如果你想在C语言中处理大整数并将其保存到文本文件,可以采用以下步骤:
1. 写入大整数:
```c
#include <stdio.h>
#include <stdlib.h>
// 将long long转换为字符串并写入文件
void write_long_to_file(long long num, const char *filename) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
perror("Error opening file");
return;
}
char buffer[50]; // 预计最大64位长整型的长度
snprintf(buffer, sizeof(buffer), "%lld", num);
fprintf(fp, "%s\n", buffer); // 添加换行符
fclose(fp);
}
// 从文件读取大整数
long long read_long_from_file(const char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
perror("Error opening file");
return -1; // 返回错误值
}
char line[50];
if (fgets(line, sizeof(line), fp)) {
long long num = strtoq(line, NULL, 10); // 使用strtoq处理大整数
if (num == LLONG_MAX && fgets(line, sizeof(line), fp) == NULL) { // 如果超过范围则检查是否还有下一行
fseek(fp, -strlen(line)-1, SEEK_CUR); // 移除已读取的内容
}
fclose(fp);
return num;
} else {
perror("Error reading from file");
fclose(fp);
return -1;
}
}
```
阅读全文