c语言从txt文件中读取
时间: 2023-08-08 07:08:38 浏览: 43
在 C 语言中,要从一个 txt 文件中读取数据,可以使用标准库中的文件操作函数。以下是一个简单示例:
```c
#include <stdio.h>
int main() {
FILE *fp;
char ch;
// 打开文件
fp = fopen("example.txt", "r");
// 检查文件是否成功打开
if (fp == NULL) {
printf("无法打开文件\n");
return 1;
}
// 逐个字符读取文件内容并输出
while ((ch = fgetc(fp)) != EOF) {
printf("%c", ch);
}
// 关闭文件
fclose(fp);
return 0;
}
```
在这个示例中,我们使用了 `fopen()` 函数打开了一个名为 `example.txt` 的文件,并将其指针赋值给了 `fp`。我们检查了文件是否成功打开,如果没有,则输出错误信息并返回。接下来,我们使用 `fgetc()` 函数逐个字符读取文件内容,并使用 `printf()` 函数输出。最后,我们使用 `fclose()` 函数关闭文件。
注意:在使用文件操作函数时,不要忘记检查文件是否成功打开和关闭,以防止出现错误。
相关问题
用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文件中每一行读取数据并保存在数组中的功能。注意,该示例代码仅供参考,实际使用时需要根据自己的需求进行修改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)