老牛来学习 发表于 2020-4-15 16:24:02

C语言

#include<stdio.h>

char *march(char *str,char ch);

int main()
{
    char ch,str,*p;

    printf("Please Input the string:\n");
    scanf("%s",str);
    getchar();

    ch = getchar();
    if((p = march(str,ch))!=NULL)
    {
      printf("%s",p);//我这个地方如果改成*p为什么会输出失败?编译器不会把字符以字符串的方式输出吗?
    }
    else
    {
      printf("Not Found!");
    }


}

char *march(char *str,char ch)
{
    while(*str!='\0')
    {
      if(*str == ch)
      {
            return (str);
      }
      else
      {
            str++;
      }
    }
    return (NULL);
}

人造人 发表于 2020-4-15 16:28:07

编译器不会把字符以字符串的方式输出吗?
对,编译器不会把字符以字符串的方式输出。

sunrise085 发表于 2020-4-15 16:28:19

在上一个贴子中,我已经针对这个问题简单说了一下
指针名是地址,加上*就不是地址而是一个确切的值了
%s输出,需要给一个地址,所以需要给指针名,而不是*指针
页: [1]
查看完整版本: C语言