#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,需要改变吗(选择y或Y改变)?", 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]);elsestrcpy(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. 退出系统[查看全文]
本帖最后由 李小粹 于 2016-2-20 19:58 编辑
[postbg]3.jpg[/postbg][flash=230,25]http://www.xiami.com/widget/115837048_1772495177/singlePlayer.swf[/flash]
我有个蓝牙耳机,是用USB接口充电的,但是它不会自动关机。
能不能自己写入一段代码让它待机一段时间后就自己关机?
[查看全文]
本弱弱用的比较多的是codeblocks,现get一个略大的程序包,求助如何在codeblocks里设置路径使其正确链接QWQ(具体就是在main里设置了include “include/XX.h”,然后此XX.h中的函数被scr/X.cpp解释[没错,两个文件名字不一样],如何才能编译的时候自动使用cpp里解释的函数,我把他们都放在同一个文件夹里也没有用。)
之前一直是利用codeblocks里的添加class或者就一个.h文件既包含文件的声名又包括解释做的,所以现在简直完全不知所措QWQ
[查看全文]
本帖最后由 樱花流逝 于 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
求解答
[查看全文]
BISS0001调节输出延时和封锁延时的电容电阻值对应的时间关系。资料虽然有写,但不太详细,个人没有看太懂,测量的时候输出延时始终保持10S左右,希望调节的更低点,望大神解答
[查看全文]