花花1212
关于设计电子词典的
展开Biu

#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. 退出系统

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

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

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

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

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

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

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

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

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

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

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

怎么解决

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

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

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

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

本帖最后由 樱花流逝 于 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

求解答

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

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

[查看全文]