求解释c语言文件管理一章的程序

求解释c语言文件管理一章的程序,第1张

你这段代码就是握陵打开或者创建一个文件,从控制终端输入字符,再打印出来,输入结束要用到文件结束唯者符EOF,这个根据不同的系统会有指皮薯不同的输入方法,在windows上是ctrl+z,在linux中是ctrl+d,估计这本书是基于windows写的,所以会有ctrl+z,这个组合建在终端上的显示就是^Z。

如果你用vc的话,就需要再打入一些字符,然后按 ctrl+z,来结束输入,之后代码会继续运行,getc循环将INPUT中的内容打印出来

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#include <math.h>

#include <string.h>

struct user

{

char UName[8]//用户名

char Password[5] //密码

}Power[5],Access

typedef struct Filenode

{

char FName[11]//文件名

struct File *next

}File

typedef struct MFDnode

{

char UName[8] //用户名

struct MFDnode *right

File *down

}MFDnode,* DFlink

//字符串输入 scanf("%s",&Power[i].UName)(饥正此处取地址符可要可不要??)

// gets(Power[i].UName)两种方法均可

initPower() // 初始化用户名、密码数组 Power [10]

{

int i=0

for(ii<5i++)

{

printf("请输入埋陵第%d用户的用户名:",i+1)

scanf("%s",Power[i].UName)

// gets(Power[i].UName)

printf("请输入第%d位用户的密码:",i+1)

scanf("%s",Power[i].Password)

// gets(Power[i].Password)

}

for(i=0i<5i++)

{

printf("第%d位用户的用户名和密码为:",i+1)

printf("%s,%s\弯肢戚n",Power[i].UName,Power[i].Password)

}

printf("用户的用户名和密码初始化成功!\n")

}

int logging() //用户登录,验证用户名、密码,返回用户在Power中的下标

{

int i=0,a,b

printf("请输入您的用户名:")

scanf("%s",Access.UName)

// gets(Access.UName)

printf("请输入您的密码:")

scanf("%s",Access.Password)

// gets(Access.Password)

printf("您输入的用户名和密码为:")

printf("%s,%s\n",Access.UName,Access.Password)

for(i=0i<10i++)

{

a=strcmp(Power[i].UName,Access.UName)

b=strcmp(Power[i].Password,Access.Password)

if(a==0 &&b==0)

{

printf("用户UFD%d登陆成功!",i)

return (i)

}

}

if(i==10)

{

printf("用户名或密码错误!登录失败!")

}

return -1

}

DFlink CreateFromHead()

/*通过键盘输入表中元素值,利用头插法建单链表,并返回该单链表头指针L*/

{

DFlink head

MFDnode *s

char c[8]

int i,flag=1

head=(DFlink)malloc(sizeof(MFDnode))/*建立头结点*/

head->right=NULL/*建立空的单链表L*/

// printf("1111111\n")

while(flag) /* flag初值为1,当输入"$"时,置flag为0,建表结束*/

{

printf("请输入用户名:\n")

scanf("%s",c)

if(c[0]!='$')

{

s=(MFDnode*)malloc(sizeof(MFDnode))/*建立新结点s*/

strcpy(s->UName,c)

s->right=head->right/*将s结点插入表头*/

head->right=s

}

else

flag=0

}

if(head->right!=NULL)

{

head=head->right

printf("%s",head->right)

}

return head

}

void fileOP(int index)//对下标为index的用户创建、删除指定的文件

{

DFlink head

MFDnode *s

char c[8]

head=(MFDnode *)malloc(sizeof(MFDnode))

int flag=1

s->UName=Power[index].UName

while(flag)

{

c=getchar()

if(c!='$')

{

s=(MFDnode *)malloc(sizeof(MFDnode))

s->UName=c

s->down=head->down

head->down=s

}

else flag=0

}

}

void print(int index) // 输出下标为index的用户的全部文件名{

}

void main() //主函数

{

int r

DFlink head

head=(MFDnode*)malloc(sizeof(MFDnode))

head->right=NULL

initPower()

r=logging()

printf("%d\n",r)

printf("用头插法建立单链表,请输入链表数据,以$结束!\n")

head=CreateFromHead()

// fileOP(r)

}

大部分代码已写,剩下的你补充就行啦

你是想同时显示好几行数据,还是想实现按一下按钮,文本框就显示下一行数据呢?

默认情况下,通过成员变量m_column获取的数据是该列的第一个数据,所以显示出来也是第一个数据;

如果想显示别的行里的数据,我知道的方法是使用过昌液册滤器:

// request data using ID as filter

bool CIsoView::Frequery(const int&ID)

{

m_pSet->m_IDparam = ID

m_pSet->m_strFilter = "[ID] = ?"

if(!m_pSet->Requery())

MessageBox(_T("Failed to require."))

return false

}

这段代码中的m_IDparam就是起到过滤作用的参数;由于Access的一张数据表中通常有一列自动编号ID,利用ID可以唯一的定位某一行的数据,那么把ID赋给m_IDparam,就可以过滤出想要的某一行埋渗数据。

假设第二行数据的ID是2,那么只要把2赋值给m_IDparam,将m_IDparam作为过滤耐宏参数作用于m_strFilter = "[ID] = ?"这个过滤器中,再调用Requery()函数,就可以令m_column得到column列第二行的数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12464978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存