萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1243|回复: 3

C语言问题,已解决!

[复制链接]
发表于 2007-10-16 22:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
学习C的过程中又遇到了一个问题,请指教
我定义了一个字符串集合, 请问该如何检测里面有多少个字符串呢?

static char *opcode[] = {"addlw","addwf","andlw","andwf","bcf","bsf","btfsc","btfss","call,""clrf","clrw","clrwdt","comf","decf","decfsz","goto","incf","incfsz","iorlw","iorwf","movf","movlw","movwf","nop","retfie","retlw","return","rrf","rlf","subwf","sleep","sublw","xorlw","xorwf" };

下面是我自己编的程序,编译的时候显示没有语法错误,但运行后就会出现系统错误而中断编译。
int main(void)
{
         int i;
     int zahl = 0;

    for(i=0; (int)strlen(opcode[ i ]) != 0;i++)
    {
       printf("%s\n",opcode[ i ]);
       zahl = i;
     }
     printf("%d\n",zahl);
         return 0;
}

我知道问题出在这个语句上 (int)strlen(opcode[ i ]) != 0
因为如果把这句换成比如 i<20 之类的边界条件,程序都能正常运行。
程序中断是不是因为当检测完集合里最后一个元素 "xorwf"之后,下一次运行出现了溢出呢?
我应该如何改写程序呢?

[ 本帖最后由 U-Boot 于 2007-10-17 09:03 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2007-10-16 22:11 | 显示全部楼层
诶~~对字符串最没辙了。。。
完全瞎说的意见,我只是好奇,你的opcode不用加下标吗?
opcode这样?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2007-10-16 22:19 | 显示全部楼层

回复 #2 fiona_chen 的帖子

程序里的opcode加下标的,不知道为什么网页上显示不出来,刚刚在下标的地方加了空格才能显示出来。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2007-10-17 08:03 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-12 02:48 , Processed in 0.061341 second(s), 16 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表