当前位置:  技术问答>linux和unix

ubuntu系统下用GTK编写C界面,请高手进来看看!跪求!!

    来源: 互联网  发布时间:2017-01-06

    本文导语:  小弟初学linux,用GTK写了一个简易的计算器界面,界面没问题,计算结果也没有问题,就是当要把结果显示在文本框的时候出现了一个什么段错误,小弟看了很久都没看懂为什么。。。麻烦前辈帮小弟看看,感激不急...

小弟初学linux,用GTK写了一个简易的计算器界面,界面没问题,计算结果也没有问题,就是当要把结果显示在文本框的时候出现了一个什么段错误,小弟看了很久都没看懂为什么。。。麻烦前辈帮小弟看看,感激不急啊。已经有部分解释了,
代码如下:
#include
#include
#include
#include
#include
#include

struct cal
{
char h;
char hh[30];
struct cal *next;
};
char * operating(char ch[10])
{
int i=0,j=0;  
char temp[20];
char *t;
char *s;    
struct cal *head,*pre,*p;
head=(struct cal *)malloc(sizeof(struct cal));
pre=head;
p=head;
p->next=NULL; 
while(ch[i]!='=')
{
j=0;
p->next=(struct cal *)malloc(sizeof(struct cal));
p=p->next;
p->next=NULL;
p->h=ch[i++];
while(ch[i]!='+'&&ch[i]!='-'&&ch[i]!='*'&&ch[i]!='/'&&ch[i]!='=')
{
temp[j++]=ch[i++];
}
temp[j]='';
strcpy(p->hh,temp);
}
pre=head;
p=pre->next;
if(p==NULL)
return;
pre=p;
p=pre->next;
while(p)
{
if(p->h=='*'||p->h=='/')
{
if(p->h=='*')
{
gcvt(atof(pre->hh)*atof(p->hh),10,s);
strcpy(pre->hh,s);
}
else
{
gcvt(atof(pre->hh)/atof(p->hh),10,s);
strcpy(pre->hh,s);
}
pre->next=p->next;
free(p);
p=pre->next;
continue;
}
pre=p;
p=pre->next;
}
pre=head;
p=pre->next;
if(p==NULL)
{
return;
}
pre=p;
p=pre->next;
while(p)
{
if(p->h=='+')
{
gcvt(atof(pre->hh)+atof(p->hh),10,s);
strcpy(pre->hh,s);
}
else
{
gcvt(atof(pre->hh)-atof(p->hh),10,s);
strcpy(pre->hh,s);
}
pre->next=p->next;
free(p);
p=pre->next;
}
printf("%sn",pre->hh);    /*显示结算结果在终端,*/
return pre->hh;  /*返回计算结果*/
}
void on_clicked(GtkWidget *button,gpointer date)   /*这是事件函数,处理按钮事件的*/

char temp[255];
char tempp[255]="+";
char *t="=";
strcpy(temp,gtk_entry_get_text(GTK_ENTRY(date)));
strcat(temp,gtk_button_get_label(GTK_BUTTON(button)));
gtk_entry_set_text(GTK_ENTRY(date),temp);
if(strcmp(gtk_button_get_label(GTK_BUTTON(button)),t)==0) /*当按下等于按钮时调用子函数,把字符串传过去,进行计算*/
{
strcat(tempp,temp);          /*在字符串前面加一个字符‘+’,此处不多加解释,在子函数里面需要用到*/
strcpy(temp,tempp);
gtk_entry_set_text(GTK_ENTRY(date),operating(temp));/**返回计算结果,并显示在文本框中*/
}
}
void main(int a,char *b[]) /*主函数,负责创建计算器界面*/
{
GtkWidget *window;
GtkWidget *text;
GtkWidget * button[16];
GtkWidget *table;
GtkWidget *table2;
int i=0,j=0,z=0;
char temp[16][2]={{'0',0x00},{'1',0x00},{'2',0x00},{'3',0x00},{'4',0x00},{'5',0x00},{'6',0x00},{'7',0x00},{'8',0x00},{'9',0x00},{'.',0x00},{'=',0x00},{'+',0x00},{'-',0x00},{'*',0x00},{'/',0x00}};

gtk_init(NULL,NULL);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"祥子之简易计算器");
table=gtk_table_new(2,1,FALSE);
table2=gtk_table_new(4,4,FALSE);
text=gtk_entry_new();
gtk_container_add(GTK_CONTAINER(window),table);
gtk_table_attach(GTK_TABLE(table),text,0,1,0,1,(GtkAttachOptions)(GTK_FILL|GTK_EXPAND),(GtkAttachOptions)(0),0,0);
gtk_table_attach(GTK_TABLE(table),table2,0,1,1,2,(GtkAttachOptions)(GTK_FILL),(GtkAttachOptions)(GTK_FILL|GTK_EXPAND),0,0);

for(;i

    
 
 

您可能感兴趣的文章:

  • ubuntu12.04使用c编写php扩展模块教程分享
  • ubuntu系统下用GTK编写C界面,出现问题了!求解释!
  • ubuntu中怎么从图形界面进入字符界面
  • Ubuntu11.04版本进入字符界面问题
  • 在我的老机器上用硬盘镜像装ubuntu7.10,安装过程不是窗口界面
  • ubuntu10.04图形界面
  • Ubuntu10.0下进不了文字界面!小白求教!!!!!!!!!!
  • ubuntu不能停留在字符界面是什么情况?
  • 原来已安装好ubuntu,因系统崩溃,重装WINXP系统,如何再次登录ubuntu系统? iis7站长之家
  • Ubuntu中的Bochs如何开启图形界面调试?
  • ubuntu 8.10 出问题了,进不了图形界面了
  • 关于ubuntu字符界面系统console显示多国语言
  • ubuntu9.10 如何启动字符界面?
  • 求助!ubuntu 无法进入图形界面!
  • 为什么ubuntu11.04装完之后进不来图形界面
  • 在ubuntu下面开发图形界面程序的软件有那些
  • 为什么进UBUNTU会在启动界面卡死
  • 升级ubuntu 到11.10,无法进入图形界面
  • 硬盘安装Ubuntu6.10,安装的时候,不能进入图形界面
  • 我用VMvare安装ubuntu的时候为什么进不去图形化的安装界面?
  • VMware下安装Ubuntu dvd版 没有用户界面,咋回事?
  • 急救!升级Ubuntu后,重启,出现grub rescue界面,如何解决?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用过ubuntu的进来
  • 参加过昨天在自动化大厦进行ubuntu 大会的进来
  • 关于在ubuntu下的minicom,大伙进来看看
  • 会用Ubuntu或者Linux的请进来~~~~~~
  • Ubuntu 11.10启动问题, 请进来看详情
  • Ubuntu 12.04长期支持版和最新版Ubuntu 13.10下载
  • vmware里装了Ubuntu后Ubuntu.vmdk文件大小和Ubuntu系统大小区别?
  • Ubuntu查看系统信息命令介绍
  • win7与Ubuntu双系统卸载ubuntu
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 装ubuntu的时候选安装ubuntu与win7共存与选其他选项
  • Ubuntu查看硬盘,分区相关命令介绍
  • winxp+ubuntu32+ubuntu64是否可以这样装系统?
  • Ubuntu系统安装及升级命令
  • ubuntu能安装rpm包吗&&ubuntu的intel 945显卡驱动
  • Ubuntu Precise 12.04 (LTS) (64-bit)下面安装docker
  • 在win7下装ubuntu成功后进不去ubuntu!!??
  • Ubuntu Raring 13.04 和 Saucy 13.10 (64 bit)下面安装docker
  • 原来已安装好ubuntu,因系统崩溃,重装WINXP系统,如何再次登录ubuntu系统?
  • Ubuntu Trusty 14.04 (LTS) 下面安装docker及依赖关系检查
  • ubuntu10.10 和 ubuntu 10.04.1
  • Ubuntu Vivid 15.04 下面安装docker的详细步骤
  • Ubuntu 中的 ubuntu one 算不算的上云?
  • ubuntu系统中软件安装、卸载以及查询是否已经安装某个软件包的方法
  • 安装ubuntu11.04时,过了ubuntu的logo花屏,怎么解决
  • Ubuntu查看内存,进程相关命令介绍
  • 我想根据ubuntu官网上介绍的方法安装ubuntu,是否应该先分一块硬盘空间?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3