0
如何创建一个输入函数来打开输入文件并从文件读入数据?并且该文件是否必须存储在某个位置?我可以这样做,只需将它保存在我的桌面上作为文本文件?这是我到目前为止的内容创建一个输入函数
#include <stdio.h> /* NULL is defined here */
#include <stdlib.h> /* for malloc() */
#include <string.h> /* for string related functions */
#define NAME_LEN 10
struct data {
char name[NAME_LEN];
int age;
int weight;
};
typedef struct data DATA;
struct linked_list {
DATA d;
struct linked_list * next;
};
typedef struct linked_list ELEMENT;
typedef ELEMENT * LINK;
/* function prototypes */
LINK create_list_from_file(const char *);
void print_list_to_file(LINK, const char *, const char *);
int count(LINK, const int, const int);
LINK lookup(const DATA, LINK);
void insert(LINK, LINK, LINK);
nt main(int argc, char *argv[])
{
LINK head, found, to_add;
char *in_file_name = "infile"; /* default input file name */
char *out_file_name = "outfile"; /* default output file name */
int a = 20, w = 150; /* will be used as the age limit and weight limit */
/* The input and output files can be given as command line arguments */
switch (argc) {
case 1:
printf("The default input and output files are %s and %s.\n",
in_file_name, out_file_name);
break;
case 2:
printf("The input file is %s and the default output file is %s.\n",
argv[1], out_file_name);
in_file_name = argv[1];
break;
case 3:
printf("The input file is %s and the output file is %s.\n",
argv[1], argv[2]);
in_file_name = argv[1];
out_file_name = argv[2];
break;
default:
printf("The input file is %s and the output file is %s.\n",
argv[1], argv[2]);
in_file_name = argv[1];
out_file_name = argv[2];
printf("The remaining arguments are not used.\n");
}
/*
1. invoke create_list_from_file() function to create a linear linked list
from the data in the input file,
*/
head = create_list_from_file(in_file_name);
/*
2. invoke print_list_to_file() function with the writing mode ("w"),
*/
print_list_to_file(head, out_file_name, "w");
/*
3. invoke the count() function,
4. output the counted result to the screen,
*/
printf("The number of people with age over %d and weight over %d is %d.\n",
a, w, count(head, a, w));
/*
5. invoke the lookup() function and insert() function, and
*/
/* prepare an element to be looked-up and added */
to_add = malloc(sizeof(ELEMENT));
strcpy(to_add -> d.name, "Janet");
to_add -> d.age = 21;
to_add -> d.weight = 150;
to_add -> next = NULL;
found = lookup(to_add -> d, head);
insert(head, found, to_add);
/*
6. invoke print_list_to_file() function with the append mode ("a").
*/
print_list_to_file(head, out_file_name, "a");
/*
repeat step 5 with an element that does not exist in the current list
*/
/* prepare an element to be looked-up and added */
to_add = malloc(sizeof(ELEMENT));
strcpy(to_add -> d.name, "Jerry");
to_add -> d.age = 24;
to_add -> d.weight = 220;
to_add -> next = NULL;
found = lookup(to_add -> d, head);
insert(head, found, to_add);
/*
repeat step 6: invoke print_list_to_file() function with the append mode ("a").
*/
print_list_to_file(head, out_file_name, "a");
return 0;
}
该文件不必位于特定位置。只是谷歌“C文件阅读示例”,你会发现很多的例子。上面的代码与读取文件无关。 – 2011-04-27 04:39:26
对不起,发布了错误代码 – Jacob 2011-04-27 04:42:46
@jonsca:不是这样,'in_file_name'是一个'char *',并且可以指向'argv [1]'。 – 2011-04-27 04:51:38