回 帖 发 新 帖 刷新版面

主题:难道是指针赋值问题,见源码!

[code=c]
#include <stdio.h>
#include <string.h>
#define MAX 100
char *cstrchr(const char * ,char );
int main(void)
{
    char ch;
    char text[MAX]="this is a test";
    char *found;

    printf("input a char for search\n");
    scanf("%c",ch);
    found=cstrchr(text,ch);
    puts(found);
}
char *cstrchr(const char *str, char c)
{
    char *find;

    while (*find=*str)
    {
        if(*find==c)
          return find;
        find++;str++;
    }
    return NULL;
}
[/code]


上面的程序编译通过,可是运行不了,敢问哪出问题了,谢谢

回复列表 (共3个回复)

沙发

char *find;
while (*find=*str)

执行while的时候find还不知道指向哪里呢,当然会错误了。

板凳

那我加个赋值行不行:
 find = str ;

3 楼

scanf("%c",ch);//&ch
 char *find;

 while (*find=*str)//find是个未初始化的指针,指向不明,你不能给他所指向的地址赋值

我来回复

您尚未登录,请登录后再回复。点此登录或注册