c语言从txt文件中读取
时间: 2023-08-08 16:08:38 浏览: 38
可以使用标准库中的文件操作函数来实现从txt文件中读取数据。以下是一个简单的例子:
```c
#include <stdio.h>
int main() {
FILE *fp;
char buffer[255];
fp = fopen("file.txt", "r");
if (fp == NULL) {
printf("无法打开文件\n");
return 1;
}
while (fgets(buffer, 255, fp)) {
printf("%s", buffer);
}
fclose(fp);
return 0;
}
```
在上面的代码中,我们使用了`fopen()`函数打开文件,其中参数`"r"`表示以只读方式打开文件。如果文件打开成功,`fopen()`函数将返回一个指向文件的指针,否则返回`NULL`。我们使用`fgets()`函数读取文件中的每一行数据,并将其输出到控制台。最后,我们使用`fclose()`函数关闭文件。
需要注意的是,`fgets()`函数每次只能读取一行数据,因此我们需要在循环中重复调用它直到文件读取完毕。另外,我们需要指定一个足够大的缓冲区来存储每一行数据,以避免发生缓冲区溢出的情况。
相关问题
用c语言从txt文件中读取一个二叉树
首先,需要了解二叉树的存储方式。常见的有两种方式:链式存储和顺序存储。
链式存储方式是指使用指针来表示二叉树的节点之间的关系,每个节点包含一个数据域和两个指针域,分别指向左子树和右子树。
顺序存储方式是指使用数组来表示二叉树的节点之间的关系,按照某种规则将节点存储在数组中,父节点的下标为i,左子树的下标为2i,右子树的下标为2i+1。
下面是使用链式存储方式来读取一个二叉树的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
char data; // 节点数据
struct TreeNode *left; // 左子树指针
struct TreeNode *right; // 右子树指针
} TreeNode;
// 从文件中读取一个字符,直到读到非空格字符
char readChar(FILE *fp) {
char c;
do {
c = fgetc(fp);
} while (c == ' ' || c == '\n' || c == '\r'); // 忽略空格、换行和回车
return c;
}
// 从文件中读取一个二叉树
TreeNode* readBinaryTree(FILE *fp) {
char c = readChar(fp);
if (c == '#') { // 空节点
return NULL;
} else {
TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = c;
node->left = readBinaryTree(fp); // 递归读取左子树
node->right = readBinaryTree(fp); // 递归读取右子树
return node;
}
}
// 中序遍历二叉树,用于检查读取结果是否正确
void inorderTraversal(TreeNode *root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%c ", root->data);
inorderTraversal(root->right);
}
}
int main() {
FILE *fp = fopen("tree.txt", "r");
if (fp == NULL) {
printf("Error: cannot open file.\n");
exit(1);
}
TreeNode *root = readBinaryTree(fp);
fclose(fp);
inorderTraversal(root);
return 0;
}
```
假设tree.txt文件内容为:
```
A B # # C D # #
```
则读取结果为:
```
B A D C
```
说明读取成功。
这里使用了递归的方式来读取二叉树,对于每个节点,先读取一个字符,如果是#表示空节点,否则创建一个新节点,并递归读取左右子树。由于递归的过程中需要不断读取文件,因此需要一个辅助函数readChar来实现从文件中读取一个字符并忽略空格、换行和回车的功能。最后使用中序遍历来检查读取结果是否正确。
当然,也可以使用其他方式来存储二叉树,比如使用顺序存储方式,这需要根据具体的存储规则来编写读取代码。
c语言 从txt文件中读取每一行保存在数组中
C语言可以通过文件操作函数读取txt文件中的内容,一次读取一行,再将每一行保存在数组中。
实现步骤如下:
1.使用fopen函数打开指定的txt文件,获取文件指针,示例代码如下:
```c
FILE *fp;
char *filename = "test.txt";
fp = fopen(filename, "r");
```
2.定义一个字符数组,用于保存每一行读取的数据,定义一个计数器变量用于记录当前读取到的行数,示例代码如下:
```c
char line[100]; // 保存每行数据
int count = 0; // 记录行数
```
3.使用fgets函数逐行读取文件内容,直到文件结束,将每一行数据保存在数组中,示例代码如下:
```c
while (fgets(line, 100, fp) != NULL) { // 逐行读取文件内容
strcpy(array[count], line); // 将该行数据保存在数组中
count++; // 行数加1
}
```
4.读取完毕后,关闭文件指针,释放资源,示例代码如下:
```c
fclose(fp); // 关闭文件指针
```
综上,以上代码可以实现从txt文件中每一行读取数据并保存在数组中的功能。注意,该示例代码仅供参考,实际使用时需要根据自己的需求进行修改。