c语言根据文本文件内容创建结构体 200

有一个文本文件,内容如下:createtableStdudent(namechar*(100)(NotNULL)scorefloat(4)(NUll)idfloat(4)... 有一个文本文件,内容如下:
create table Stdudent

name char*(100)(Not NULL)
score float(4)(NUll)
id float(4) (Not NULL)

我的意思是如何通过读取文件这个操作,创建一个名为Student的结构体,并包含括号中的三个列。
3楼的,如果我在文本文件中删去一列,你这样建立的表还可以吗?
展开
 我来答
文昭九日
2009-12-15 · TA获得超过278个赞
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:144万
展开全部
#include <stdio.h>
#include <string.h>
#include <windows.h>

struct student_table
{
char name[100];
float score;
float id;
};
typedef struct student_table stable, *stp;

int table_write(stp st, FILE *fp)
{
if(st && fp)
{
fprintf(fp, "%s\n%f\n%f\n", st->name, st->score, st->id);
fflush(fp);
return 0;
}
printf("Bad args in table_write.\n");
return 0;
}
int table_read(stp st, FILE *fp)
{
if(st && fp)
{
/*这里就是读文件的代码*/
fscanf(fp, "%s\n%f\n%f", st->name, &st->score, &st->id);
/*fscanf函数的第一参数是文件指针,然后是格式字符串,最后是格式输入序列*/
return 0;
}
printf("Bad args int table_read.\n");
return 1;
}

int main (int argc, char *argv[])
{
struct student_table s1, s2;
FILE *fin, *fout;

strncpy(s1.name, "Ivan", 100);
s1.name[100] = '\0';
s1.score = 60; s1.id = 4869;

fout = fopen("student.txt", "a");
fin = fopen("student.txt", "r+");
if(NULL == fin || NULL ==fout)
{
printf("Can't open the file.\n");
}

table_write(&s1, fout);/*写数据*/

table_read(&s2, fin);/*读数据*/

printf("%s\n%f\n%f\n", s2.name, s2.score, s2.id);
s2.score = 100;
table_write(&s2, fout);//接着上次写的位置写

table_read(&s1, fin);//接着上次读的位置读
printf("%s\n%f\n%f\n", s1.name, s1.score, s1.id);

if(fclose(fin) != 0 || fclose(fout) != 0)
fprintf (stderr, "Error in closing file.\n");

system("pause");

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2f10abdd0
2009-12-15 · 超过16用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:17.5万
展开全部
文本是标准的SQL命令,涉及文本、处理时比较麻烦的,因为C语言本身的字符串处理功能不强。可以采用曲线救国的方法。
1、首先创建一个头文件extern.h,
2、写入字符串extern struct
3、设计一个文本过滤程序,从文本文件中复制所有内容,追加到头文件内,并且过滤掉null、noe、create、table、(4)、()等字符。
4、设计第二个过滤程序,将()换成[],类型名和变量名互换位置
5、现在你就可以在你要写的程序中包含这个头文件,并以外部变量的形式创建这个结构体。
很麻烦,如果在Unix下使用awk/grep/ed来做就很简单了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wlabing
2009-12-15 · 超过18用户采纳过TA的回答
知道答主
回答量:178
采纳率:0%
帮助的人:0
展开全部
fgets一行行的读取,每一行使用strtok用空格进行分割得到每个关键字,然后拼接成结构体。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxwsbobo
2009-12-15
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
没明白什么意思,不过结构是数据类型,程序运行期间无法改变,可以使用指针,运行期间根绝文本文件内容的不同?来规定指针的含义,分配内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式