LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 689|回复: 3

求教以下关于指针数组的使用!!

[复制链接]
发表于 2005-4-25 11:13:36 | 显示全部楼层 |阅读模式
代码如下:
#include<stdio.h>
#define TRUE 1
#define FALSE 0
int find_char( char **strings,char value)
{
        char *string;
        while( (string = *strings++) != '\0')
        {
                while( *string++ = '\0')
                {
                        if( *string == value)
                                return TRUE;
                }
        }
        return FALSE;
}
int main( void )
{
        int b;
        char c = 'q';
        char *a[] = {"abc","defg","hijqz"};
        char **d = a;
        b = find_char( d, c );//问题所在
        printf( "b = %d\n",b );
}
问题是:编译通过,但是执行就提示段错误。问题应该是在注释的那句,但是我不知道为什么错了,是不是参数传递有问题啊,应该怎么传送第一个参数呢?
发表于 2005-4-25 11:27:15 | 显示全部楼层
Post by jovesky
代码如下:
#include<stdio.h>
#define TRUE 1
#define FALSE 0
int find_char( char **strings,char value)
{
        char *string;
        while( (string = *strings++) != '\0')
        {
                while( *string++ = '\0')
                {
                        if( *string == value)
                                return TRUE;
                }
        }
        return FALSE;
}
int main( void )
{
        int b;
        char c = 'q';
        char *a[] = {"abc","defg","hijqz"};
        char **d = a;
        b = find_char( d, c );//问题所在
        printf( "b = %d\n",b );
}
问题是:编译通过,但是执行就提示段错误。问题应该是在注释的那句,但是我不知道为什么错了,是不是参数传递有问题啊,应该怎么传送第一个参数呢?

how can you compare a string and a char
&
think about what *strings++ means
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-25 11:40:16 | 显示全部楼层
Post by rickxbx
how can you compare a string and a char
&
think about what *strings++ means

你的意思是我的函数写错了?
关于string = *strings++。
*strings++是首先把*strings赋给string,也就是把当前strings指的指针给string,然后strings 指针指向下一个字符串,不知道这样对不对?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-25 11:53:54 | 显示全部楼层
知道了知道了,哎呀,低级错误,怪不得rickxbx会说string和char比较,我还想什么意思呢,呵呵!
while( *string++ = '\0')应该是 while( *string++  != '\0')
非常感谢rickxbx!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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