花花1212
关于设计电子词典的

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szWORD 32
#define szSTRN 224
#define szITEM sizeof(struct TItem)
char fileDict[szSTRN];
typedef struct TItem
{
char word[szWORD];
char mean[szSTRN];
} Item;
fpos_t lookup(char *word, char *mean)
{
FILE * f = 0; Item i;
int r = 0; fpos_t p = 0;
if(!word) return 0;
f = fopen(fileDict, "rb");
if (!f) return 0;
while(!feof(f))
{
fgetpos(f, &p);
r = fread(&i, szITEM, 1, f);
if(r < 1) break;
if(i.word[0] == 0) continue;
if(strcmp(i.word , word)) continue;
if(mean) strcpy(mean, i.mean );
fclose(f);
return p+1;
}
fclose(f);
return 0;
}
void append(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p)
{
printf("字典内已经有该单词记录!\n");
return;
}
printf("请输入释义,按回车结束:");
fflush(stdin);
gets(i.mean );
f = fopen(fileDict, "ab");
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已新增\n");
}
void erase(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p==0)
{
printf("字典内没有该单词记录!\n");
return;
}
p--;
memset(&i, 0, szITEM);
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已删除\n");
}
void edit(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p==0)
{
printf("字典内没有该单词记录!\n");
return;
}
p--;
printf("请输入释义,按回车结束(输入abort放弃修改):");
fflush(stdin);
gets(i.mean );
if(strstr(i.mean ,"abort"))
{
printf("已放弃修改!\n");
return ;
}
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已保存\n");
}
void query(void)
{
Item i; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:");
scanf("%s", i.word );
p = lookup(i.word, i.mean );
if(p==0)
{
printf("字典内没有该单词记录!\n");
return;
}
printf("【词条】%s\n【释义】%s", i.word , i.mean );
}
void set(void)
{
int cmd = 0;
printf("当前字典为%s,需要改变吗(选择yY改变)?", fileDict);
cmd = getch();
if(cmd == 'y' || cmd == 'Y')
{
printf("请输入字典文件名称(包含路径):");
scanf("%s", fileDict);
printf("设置成功!\n");
}
}
int main(int argc, char * argv[])
{
int cmd = 0;
if(argc >1)
strcpy(fileDict, argv[1]);
else
strcpy(fileDict, "c:\\dict.txt");
/*end if*/
for(;;)
{
printf("\n\
************************\n\
** 欢迎使用迷你字典!**\n\
************************\n\
** 0 - 设置字典 **\n\
** 1 - 查询词条 **\n\
** 2 - 新增词条 **\n\
** 3 - 编辑词条 **\n\
** 4 - 删除词条 **\n\
** 5 - 退出字典 **\n\
************************\n");
cmd = getch() - '0';
switch(cmd)
{
case 0: set(); break;
case 1: query(); break;
case 2: append(); break;
case 3: edit(); break;
case 4: erase(); break;
default: return 0;
}
}
return 0;
}有谁可以帮我详细的解释一下
以下是要求 (1)、采用结构体数组,每个数据的结构应当包括:单词的英文拼写,单词的中文释义。
(2)、系统功能:
a. 词条录入:即添加单词记录。
b. 信息显示:将所有的单词按字母顺序显示。
c. 词条修改:对已经输入的单词信息进行修改。
d. 词条删除:删除某个单词记录。
e. 单词查询: 输入单词英文拼写,输出该单词的中文释义。
f. 信息保存:将单词信息保存到文件。
g. 退出系统

wugy315
哪里不懂直接问
展开Biu

哪里不懂直接问。没工夫帮你一条一条写注释。

你这应该是应付作业吧。

以后如果自己写代码记得敲好备注。

自己看好看,别人帮你找BUG也方便。

[查看全文]
hahahggg
之前有安装过百度云管家在U盘上.后来把哪个

之前有安装过百度云管家在U盘上.后来把哪个盘给格式化了之后就留下了其他里面那个,现在就成这样了 求助

hahahggg
今天插上
展开Biu

今天插上U盘就弄好了...

[查看全文]
wugy315
你问题解决没
展开Biu

不用删。你问题解决没

[查看全文]
hahahggg
wugy315
这个贴其实应该发到水区去
展开Biu

这个贴其实应该发到水区去。发到这儿看到的人不多

[查看全文]
wugy315
你说的是安装包在
展开Biu

你说的是安装包在u盘里还是软件装在U盘里?百度云是只能装在硬盘的吧?

最好的解决方式是完全卸载软件下载新的安装包重装

[查看全文]
张三
编程小小白

又至一年开学季#km在下不得不厚着脸皮来求资源了,请问有什么比较适合自学的C++视频教学#pm最好有链接#28m

或者直接学Java你们觉得我期末C++能过吗?#31t

ID:L1
实战肯定不够
展开Biu

wugy315 发表于 2016-3-1 18:33

实战肯定不够。但是你去接触有了java 的基础会学得很快就是了

多谢大神以后求教。。

[查看全文]
wugy315
实战肯定不够
展开Biu

ID:L1 发表于 2016-3-1 18:20

实战呢。。。。。

实战肯定不够。但是你去接触有了java 的基础会学得很快就是了

[查看全文]
ID:L1
其实很简单
展开Biu

wugy315 发表于 2016-2-26 21:54

C++其实很简单。你要是会JAVA的话C++期末稍微看一下就能过。

加油

实战呢。。。。。

[查看全文]
张三
安利一个编程教程视频网站
展开Biu

绊鸢 发表于 2016-2-28 22:28

安利一个编程教程视频网站:慕课网。

链接自己问度娘。

看了,感觉慕课网里的C++跟老师讲得不太一样#7069!

[查看全文]
绊鸢
安利一个编程教程视频网站
展开Biu

安利一个编程教程视频网站:慕课网。

链接自己问度娘。

[查看全文]
wugy315
其实很简单
展开Biu

C++其实很简单。你要是会JAVA的话C++期末稍微看一下就能过。

加油

[查看全文]
李小粹
蓝牙耳机能不能写入代码以让其自动关机?

本帖最后由 李小粹 于 2016-2-20 19:58 编辑

[postbg]3.jpg[/postbg][flash=230,25]http://www.xiami.com/widget/115837048_1772495177/singlePlayer.swf[/flash]

我有个蓝牙耳机,是用USB接口充电的,但是它不会自动关机。

能不能自己写入一段代码让它待机一段时间后就自己关机?

李小粹
这个区几乎是荒芜的
展开Biu

wugy315 发表于 2016-2-26 22:10

这个区几乎是荒芜的。

本着尽量不让宅友寒心和流失的心,我自己偶尔会来逛逛。

好吧,谢谢你的细心讲解

[查看全文]
wugy315
这个区几乎是荒芜的
展开Biu

这个区几乎是荒芜的。

本着尽量不让宅友寒心和流失的心,我自己偶尔会来逛逛。

下面是个人见解,可能不对。

对蓝牙耳机写入程序,作为用户基本上是做不到的。

首先,你要改动程序,要先了解耳机本身的软件和硬件支持。而源码这种东西,用户是获取不到的。

其次,就算你获取到了耳机的源码也了解了硬件构造,你要自己将程序写入ROM的话还需要一块开发板和其他相应的工具(专门购置开发板的话还不如换一个支持自动关机的耳机来得省钱省力)。

再者,如果耳机精密(不过估计你的耳机不是什么精密的耳机,否则不至于没有节点关机功能),电子开发通常用的电烙铁和焊锡还不容易使用。

所以,还是建议楼主养成良好的耳机使用习惯。不用了就及时关机。

最后,问好楼主。

[查看全文]
李小粹
求帮忙求帮忙求帮忙
展开Biu

求帮忙求帮忙求帮忙

[查看全文]
李小粹
大神来帮帮忙忙啊
展开Biu

大神来帮帮忙忙啊

[查看全文]
李小粹
不要沉啊
展开Biu

不要沉啊

[查看全文]
李小粹
一个人都没有
展开Biu

一个人都没有?

[查看全文]
小皮球
怎么解决

怎么解决

wugy315
这样就可以在弹出的对话框里检查是否禁用了
展开Biu

开始—>运行—>dxdiag.exe

这样就可以在弹出的对话框里检查是否禁用了direct3d加速。

禁用了的话就“启用”好了。

还不行的话备份重装一下显卡驱动

再不行重装QQ游戏

[查看全文]
笠雨聆月
.h文件和.cpp文件的设置问题

本弱弱用的比较多的是codeblocks,现get一个略大的程序包,求助如何在codeblocks里设置路径使其正确链接QWQ(具体就是在main里设置了include “include/XX.h”,然后此XX.h中的函数被scr/X.cpp解释[没错,两个文件名字不一样],如何才能编译的时候自动使用cpp里解释的函数,我把他们都放在同一个文件夹里也没有用。)

之前一直是利用codeblocks里的添加class或者就一个.h文件既包含文件的声名又包括解释做的,所以现在简直完全不知所措QWQ

樱花流逝
的名称不是得一样么
展开Biu

.h和.cpp的名称不是得一样么?

[查看全文]
樱花流逝
进程间使用D-bus通信时发生段错误

本帖最后由 樱花流逝 于 2016-1-26 22:41 编辑

代码是这样的

[mw_shl_code=c,true]#include<stdio.h>

#include<glib.h>

#include<dbus/dbus-glib-lowlevel.h>

static gboolean send_ding(DBusConnection *bus);

int main(){

GMainLoop* loop;

DBusConnection *bus;

DBusError error;

loop=g_main_loop_new(NULL,FALSE);

dbus_error_init(&error);

bus=dbus_bus_get(DBUS_BUS_SESSION,&error);

if(!bus){

g_warning("connecting failure to D-bus: %s",error.message);

dbus_error_free(&error);

return 1;

}

dbus_connection_setup_with_g_main(bus,NULL);

g_timeout_add(1000,(GSourceFunc)send_ding,bus);

g_main_loop_run(loop);

return 0;

}

static gboolean send_ding(DBusConnection *bus){

DBusMessage *message;

message=dbus_message_new_signal("/com/burtonini/dbus/ding",

"com.burtonini.dbus.Signal",

"ding");

dbus_message_append_args(message,

DBUS_TYPE_STRING,"ding!",

DBUS_TYPE_INVALID);

dbus_connection_send(bus,message,NULL);

dbus_message_unref(message);

g_print("ding!\n");

return 0;

}[/mw_shl_code]

编译命令是这样的

gcc `pkg-config --cflags --libs dbus-glib-1` -g -o send dbus-ding-send.c

但是运行时终端显示“段错误”并直接退出了

用gdb调试时结果是这样的

[Thread debugging using libthread_db enabled]

Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.

strlen () at ../sysdeps/x86_64/strlen.S:106

106 ../sysdeps/x86_64/strlen.S:没有那个文件或目录

然而还是不知道错在哪orz

求解答

wugy315
这个问题最终你解决了吗
展开Biu

这个问题最终你解决了吗

[查看全文]
Soultraveler
BISS0001芯片问题,或者有人有嵌入式开发群求介绍

BISS0001调节输出延时和封锁延时的电容电阻值对应的时间关系。资料虽然有写,但不太详细,个人没有看太懂,测量的时候输出延时始终保持10S左右,希望调节的更低点,望大神解答

Soultraveler
技术宅里就没有大神吗
展开Biu

好吧。。。技术宅里就没有大神吗?还是说大神都不愿意来回答么?

我自己解答吧

经过一晚上的调试,结果就是,依然是调节电阻电容比例,因为关系是线性的,所以以此降低电容电阻就OK了。但是电容电阻的精度影响了调节时间精度。所以所有结果时间请参考实际值为准。

[查看全文]