本文目录一览:
- 1、如何用C编写代码从文本文档中提取数据
- 2、C++中怎么用txt文件模拟数据库?
- 3、c语言关于从数据库读取数据写文件
- 4、C语言如何实现对txt文件的读取和写入
- 5、用C语言打开文本文件,然后以二进制保存
- 6、C语言文件打开函数
如何用C编写代码从文本文档中提取数据
大致可以这么做,你可以参考一下,只是我的一个思路,你先试试看,通过一个循环 每次从tet文件中读取一行字符串到一个buff中去,然后到buff中查找这样的一个字符串。52424 1951 1 6 **** 这样一个字符串,记住中间的空格。在一个字符串中 查找目标字符串,网上有很多这样的代码,你去查查看
C++中怎么用txt文件模拟数据库?
将这个登录表文件,用一条链表来管理,实现功能:
bool chk_people(string id);
bool chk_people(string id,string pwd);
bool add_people(string id,string pwd);
bool del_people(string id);
bool read_file(string filename);
bool write_file(string filename);
链表中的数据可以手动添加几个,也可以从文件读入,总之先初始化链表,然后让用户操作。
每一次将用户的操作都先保存在链表里,在用户退出时就把链表中的数据全部写入到外部文件,将文件覆盖就行了,以后读入时就是新的内容了。
答应过你,把源码贴上来,调试运行过,得到预期结果
#include iostream
#include fstream
#include string
using namespace std;
struct guest{
string id;
string pwd;
guest(string i,string p):id(i),pwd(p){next = NULL;}
guest* next;
};
class guest_mgr{
private:
guest* head;
public:
guest_mgr();
bool chk_people(string id);
bool chk_people(string id,string pwd);
bool add_people(string id,string pwd);
bool del_people(string id);
bool read_file(string filename);
bool write_file(string filename);
void print_people();
~guest_mgr();
};
guest_mgr::guest_mgr(){
head = new guest("admin","123");
head-next = NULL;
}
bool guest_mgr::read_file(string filename){
ifstream inobj(filename.c_str());
if(!inobj){
cout"open file failed.\n";
return false;
}
guest *t,*p;
string sid,spwd;
p = head;
while(!inobj.eof()){
inobjsidspwd;
t = new guest(sid,spwd);
p-next = t;
p = t;
}
t-next = NULL;
return true;
}
bool guest_mgr::write_file(string filename){
ofstream outobj(filename.c_str());
if(!outobj){
cout"file open failed.";
return false;
}
guest* p = head;
while(NULL!=p){
outobjp-id" "p-pwd"\n";
p=p-next;
}
return true;
}
bool guest_mgr::add_people(string id,string pwd){
if(NULL==head)
return false;
guest* p = head;
while(NULL!=p-next){
p = p-next;
}
guest* newguest = new guest(id,pwd);
p-next = newguest;
newguest-next = NULL;
return true;
}
bool guest_mgr::chk_people(string id){
if(NULL==head)
return false;
guest *p = head;
while(NULL!=p-nextid!=p-id){
p = p-next;
}
if(NULL!=p-next){
return true;
}
else if(NULL==p-nextid==p-id)
return true;
return false;
}
bool guest_mgr::chk_people(string id,string pwd){
if(NULL==head)
return false;
guest *p = head;
while(NULL!=p-nextid!=p-id){
p = p-next;
}
if(NULL!=p-next){
if(pwd==p-pwd)
return true;
}
else if(NULL==p-nextid==p-id)
if(pwd==p-pwd)
return true;
return false;
}
bool guest_mgr::del_people(string id){
if(chk_people(id)){
guest *p = head;
guest *pre = p;
while(NULL!=p-nextid!=p-id){
pre = p;
p = p-next;
}
if(NULL!=p-next){
pre-next = p-next;
delete p;
return true;
}
else if(NULL==p-nextid==p-id){
if(p!=head){
pre-next = NULL;
delete p;
return true;
}
}
}
return false;
}
void guest_mgr::print_people(){
if(NULL==head){
cout"no guest in the list.\n";
return;
}
guest* p = head;
while(NULL!=p){
coutp-id" "p-pwd"\n";
p=p-next;
}
coutendl;
}
///////////////////////////////菜单//////////////////////////////
guest_mgr* mylist;//在菜单函数中要用到,不要移动它
string fn = "data.txt";//同上
void login(){
cout"\n-------------------Login----------------------\n";
string id,pwd;
cout"ID:";
cinid;
if(mylist-chk_people(id)){
cout"\nPassword:";
cinpwd;
if(mylist-chk_people(id,pwd)){
cout"\nlogin successful.\n";
}
else{
cout"sorry,your password is wrong.\n";
}
}
else{
cout"the id is not exsit.\n";
}
cout"\n-------------------Login----------------------\n";
}
void add(){
cout"\n-------------------Add Guest----------------------\n";
string id,pwd;
cout"ID:";
cinid;
cout"\nPassword:";
cinpwd;
if(mylist-add_people(id,pwd)){
cout"\nadd guest successful.\n";
}
else{
cout"sorry,the system is wrong.\n";
}
cout"\n-------------------Add Guest----------------------\n";
}
void del(){
cout"\n-----------------Delete Guest--------------------\n";
string id;
cout"ID:";
cinid;
if(mylist-chk_people(id)){
char c;
cout"\nare you sure to delete the guest with ID "id" .(Y/N)"endl;
cinc;
if(c=='y'||c=='Y'){
if(mylist-del_people(id))
cout"delete guest successful.\n";
else
cout"sorry,the system is wrong.\n";
}
}
else{
cout"\nsorry,the guest "id" is not exsit.\n";
}
cout"\n-----------------Delete Guest--------------------\n";
}
void menu(){
int c;
cout"\n****************************Main Menu****************************\n";
cout"1.登录\t2.添加用户\t3.删除用户\t4.打印用户清单\t5.退出";
cout"\n****************************Main Menu****************************\n";
cinc;
switch(c){
case 1:login();break;
case 2:add();break;
case 3:del();break;
case 4:mylist-print_people();break;
default:mylist-write_file(fn);exit(0);
}
}
void main(){
mylist = new guest_mgr();
mylist-read_file(fn);
while(1)
menu();
coutendl;
}
c语言关于从数据库读取数据写文件
#include stdio.h
exec sql include sqlca;
int main(){
exec sql begin declare section;
char userpasswd[30]="openlab/123456";
struct{
int id;
char name[30];
double salary;
}emp;
exec sql end declare section;
exec sql connect:userpasswd;
exec sql declare empcursor cursor for
select id,first_name,salary from
s_emp order by salary;
exec sql open empcursor;
exec sql whenever notfound do break;
for(;;){
exec sql fetch empcursor into :emp;
printf("%d:%s:%lf\n",emp.id,emp.name,
emp.salary);
}
exec sql close empcursor;
exec sql commit work release;
}
把数据存到结构体里。
C语言如何实现对txt文件的读取和写入
1、使用VS新建空工程,直接点击确定,如下所示。
2、新建c文件,用于C语言编译器,输入main.c文件,如下所示。
3、参考代码:
#include stdio.h
int main()
{
//下面是写数据,将数字0~9写入到data.txt文件中
FILE *fpWrite=fopen("data.txt","w");
if(fpWrite==NULL)
{
return 0;
}
for(int i=0;i10;i++)
fprintf(fpWrite,"%d ",i);
fclose(fpWrite);
//下面是读数据,将读到的数据存到数组a[10]中,并且打印到控制台上
int a[10]={0};
FILE *fpRead=fopen("data.txt","r");
if(fpRead==NULL)
{
return 0;
}
for(int i=0;i10;i++)
{
fscanf(fpRead,"%d ",a[i]);
printf("%d ",a[i]);
}
getchar();//等待
return 1;
}
4、编译完成后,运行exe程序,执行后显示console程序。
用C语言打开文本文件,然后以二进制保存
这些都是c语言打开文件函数fopen的一个参数打开文件方式的值:
定义函数
file
*
fopen(const
char
*
path,const
char
*
mode);
函数说明
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r
打开只读文件,该文件必须存在。
r+
打开可读写的文件,该文件必须存在。
rb+
读写打开一个二进制文件,只允许读写数据。
rt+
读写打开一个文本文件,允许读和写。
w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
wb
只写打开或新建一个二进制文件;只允许写数据。
wb+
读写打开或建立一个二进制文件,允许读和写。
wt+
读写打开或着建立一个文本文件;允许读写。
at+
读写打开一个文本文件,允许读或在文本末追加数据。
ab+
读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b
字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在posix系统,包含linux都会忽略该字符。由fopen()所建立的新文件会具有s_irusr|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth(0666)权限,此文件权限也会参考umask-c打开文本文件写主数据库
值。
自己看吧
C语言文件打开函数
ANSI
C规定文件打开用函数fopen,关闭为fclose。
1、调用方式通常为:
代码如下:
FILE
*fp;
fp=fopen(文件名,
打开方式);
2、参数说明:
文件名:
形如"myfile.dat"、"F:\data\myfile.dat"等等;
打开方式:
"r"(只读)
为输入打开一个文本文件
"w"(只写)
为输出打开一个文本文件
"a"(追加)
向文件文件尾添加数据
"rb"(只读)
为输入打开一个二进制文件
"wb"(只写)
为输出打开一个二进制文件
"r+"(读写)
为读写打开一个文本文件
"w+"(读写)
为读写建立一个新的文本文件
"a+"(读写)
为读写打开一个文本文件
"rb+"(读写)
为读写打开一个二进制文件
"wb+"(读写)
为读写建立一个新的二进制文件
"ab+"(读写)
为读写打开一个二进制文件
3、注意:
(1)用"r"方式打开的文件,不能向其输入数据,并且该文件已存在,否则出错;
(2)用"w"方式打开的文件,只能向该文件输入数据,如果所打开的文件不存在,则在打开时新建一个以指定的名字命名的文件;如果指定文件存在,则在打开时将该文件删去,然后新建一个新的文件;
(3)如果函数fopen打开文件出错,则fopen返回一个空指针值NULL;
(4)在程序开始运行时,系统自动打开3个标准文件:标准输入(stdin),标准输出(stdout),标准出错输
出(stderr)。如果要使用输入输出终端,则不需要打开,可以直接使用,如fputc(stdout,'a');向屏幕输出字符a。