C语言:从文本文件中读取输入数据
Posted 小威威__
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:从文本文件中读取输入数据相关的知识,希望对你有一定的参考价值。
C语言:从文本文件中读取输入数据
标签: C语言 文本文件 输入数据
by 小威威
我们经常通过输入测试数据来调试我们程序:一般都是直接运行程序然后再人为的输入。这样做其实是非常笨的,尤其是在测试数据较多的情况下。因此,我们就想能不能将测试数据进行复制直接输入到程序中?
显然是有这种方法的。首先,我们将输入数据复制粘贴到一个新的txt文档中,然后通过程序读取文本文档中的测试数据来实现数据的输入。
这里就涉及到了fopen与fclose,fscanf与fprintf。
fopen就是在程序中打开文件,其原理就是将储存在硬盘中的文件放到内存中运行。
fclose就是在程序中关闭文件,其原理就是将内存中运行的这个文件退出。
fscanf就是将文件中的内容读入到程序中。
fprintf就是将程序中的内容输入到另一个文件中存储起来。
下面放代码:(以我以前的代码为例利用排序二叉树进行排序)
/*main.c*/
#include<stdio.h>
#include<stdlib.h>
#include"tree.h"
int main(void)
int node_num, i = 0, temp;
Node *root = NULL;
FILE *fp1;
fp1 = fopen("1.txt", "r");
fscanf(fp1, "%d", &node_num);
while (i < node_num)
fscanf(fp1, "%d", &temp);
if (i == 0) root = init_root(temp);
else insert_node(root, temp);
i++;
traverse_tree_inorder(root);
printf("\\n");
recycle_nodes(root);
fclose(fp1);
return 0;
/*tree.h*/
# include <stdlib.h>
# include <stdio.h>
typedef struct Node
struct Node *left;
struct Node *right;
int value;
Node;
Node* init_root(int value)
Node *root;
root = malloc(sizeof(Node));
root->value = value;
root->left = NULL;
root->right = NULL;
return root;
void insert_node(Node *p, int value)
Node *pArr;
pArr = malloc(sizeof(Node));
pArr->value = value;
pArr->left = NULL;
pArr->right = NULL;
while (p->left != pArr && p->right != pArr)
while (value > p->value)
if (p->right == NULL)
p->right = pArr;
return;
else
p = p->right;
while (value < p->value)
if (p->left == NULL)
p->left = pArr;
return;
else
p = p->left;
return;
void traverse_tree_inorder(Node *p)
if (p == NULL)
return;
traverse_tree_inorder(p->left);
printf("%d ", p->value);
traverse_tree_inorder(p->right);
void recycle_nodes(Node *p)
if (p == NULL)
return;
recycle_nodes(p->left);
recycle_nodes(p->right);
free(p);
/*1.txt*/
5 23 2 3 333 35
/*输出结果*/
2 3 23 35 333
这样我们就能将测试样例复制粘贴到txt中,然后通过程序读取,这样也就避免了人为输入所带来的差错,也节省了时间。当我们要将代码提交上去时,只需将代码中的FILE指针,fopen, fclose删除,将fscanf改为scanf,将fprintf改为printf。
以上内容皆为本人观点,欢迎大家提出批评和指导,我们一起探讨!
以上是关于C语言:从文本文件中读取输入数据的主要内容,如果未能解决你的问题,请参考以下文章