c语言逐行读取txt文件数据
时间: 2023-09-08 11:11:40 浏览: 137
以下是使用C语言逐行读取txt文件数据的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char line[256];
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Error opening file\n");
exit(1);
}
while (fgets(line, sizeof(line), fp)) {
printf("%s", line);
}
fclose(fp);
return 0;
}
```
以上代码使用`fopen`打开`data.txt`文件,并使用`fgets`函数逐行读取数据。读取的每一行数据保存在`line`数组中,并使用`printf`函数输出到控制台。最后,使用`fclose`关闭文件句柄。如果文件打开失败,程序将打印错误消息并退出。
需要注意的是,以上代码假设每行数据的长度不超过`256`个字符。如果需要处理长度超过`256`个字符的行数据,需要相应增加`line`数组的长度。
相关问题
c语言逐行读取txt文件中的数字
在C语言中,你可以使用标准库函数`fopen`, `fgets`, 和 `atoi` 或者更现代的方式使用`stdio.h`中的`scanf` 函数逐行读取.txt文件中的数字。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 包含 atoi 函数
int main() {
FILE *file = fopen("example.txt", "r"); // 打开文件,如果失败返回 NULL
if (file == NULL) {
perror("Error opening file");
return 1;
}
char line[100]; // 存储一行数据
while (fgets(line, sizeof(line), file)) { // 逐行读取直到文件结束
int number;
if (sscanf(line, "%d", &number) == 1) { // 使用 sscanf 将字符串转换成整数
printf("Read number: %d\n", number);
} else {
printf("Invalid data on line.\n");
}
}
fclose(file); // 关闭文件
return 0;
}
c语言逐行读取数据并交替储存
在C语言中,如果你想逐行读取数据并交替存储,可以使用`fgets`函数配合文件操作来实现。这里有一个简单的例子,假设你要读取一个文本文件,其中每一行的数据代表一对需要交替存储的内容:
```c
#include <stdio.h>
#include <stdlib.h> // 引入malloc处理内存
#define MAX_LINES 100 // 最大行数限制
#define MAX_LINE_LENGTH 50 // 每行数据最大长度
// 结构体用于存储交替的数据
typedef struct {
char data1[MAX_LINE_LENGTH];
char data2[MAX_LINE_LENGTH];
}交替数据;
交替数据* read_alternate_data(char *filename) {
FILE *file = fopen(filename, "r"); // 打开文件
if (file == NULL) {
perror("Failed to open file");
return NULL;
}
交替数据 *data = malloc(MAX_LINES * sizeof(交替数据)); // 分配内存
if (data == NULL) {
perror("Memory allocation failed");
fclose(file);
return NULL;
}
int index = 0; // 用于记录当前读到的数据行数
while (!feof(file)) { // 遍历文件直到结束
fgets(data[index].data1, MAX_LINE_LENGTH, file); // 读取第一行数据
if (fgets(data[index].data2, MAX_LINE_LENGTH, file) != NULL) { // 如果第二行存在,则读取
index++;
} else {
break; // 如果遇到空行或文件结束,跳出循环
}
}
fclose(file);
return data;
}
void print_data(交替数据 *data, int size) {
for (int i = 0; i < size && i % 2 == 0; i++) {
printf("%s\n%s\n", data[i].data1, data[i].data2);
}
}
int main() {
alternating_data *data = read_alternate_data("input.txt");
if (data) {
print_data(data, data_size);
free(data); // 释放内存
} else {
printf("No data read.\n");
}
return 0;
}
```
阅读全文