c语言从txt文件中读取
时间: 2023-08-08 11:08:38 浏览: 76
你可以使用C标准库中的文件操作函数来读取txt文件。
以下是一个示例代码,它打开一个名为“filename”的txt文件,并逐行读取其内容:
```c
#include <stdio.h>
int main() {
FILE *fp;
char str[100];
fp = fopen("filename.txt", "r"); // 打开文件
if (fp == NULL) {
printf("无法打开文件\n");
return 1;
}
// 逐行读取文件内容
while (fgets(str, 100, fp) != NULL) {
printf("%s", str);
}
fclose(fp); // 关闭文件
return 0;
}
```
在此代码中,`fopen()`函数打开名为“filename.txt”的文件,并返回一个指向该文件的指针。如果该文件无法打开,则返回空指针。
`fgets()`函数逐行读取文件内容,并将其存储在字符数组`str`中。该函数的第二个参数指定要读取的最大字符数,第三个参数是文件指针。如果到达文件结尾,则返回空指针。
最后,`fclose()`函数关闭文件。
请注意,如果你要处理非文本文件,那么`fread()`和`fwrite()`函数可能更适合你的需求。
相关问题
用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://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)