热心市民小刘哈哈 2022-06-07 20:59 采纳率: 87%
浏览 57

指定位置输出字符串C语言

不太明白为什么最后返回ch1的地址为什么是$而且还会溢出、

#include <stdio.h>

#define MAXS 10

char *match( char *s, char ch1, char ch2 );

int main()
{
    char str[MAXS], ch_start, ch_end, *p;
    
    scanf("%s\n", str);
    scanf("%c %c", &ch_start, &ch_end);
    p = match(str, ch_start, ch_end);
    printf("%s\n", p);

    return 0;
}

/* 你的代码将被嵌在这里 */
char *match( char *s, char ch1, char ch2 )
{
    char* p,* q;
    p=s;
    q=&ch1;
    while(*p++)
    {
        if(*p<=ch1&&*p>=ch2)
        {
            printf("%c",*p);
        }
    }
    printf("%s",q);
    return q;
}

img

  • 写回答

1条回答 默认 最新

  • 滴水不穿石 2022-06-07 22:12
    关注

    scanf后用户手动回车被读入了,为了避免错误读入,scanf前先getchar()捕捉到无用的回车,在scanf读入。

    代码如下,仅供参考!谢谢

    img

    img

    #include <stdio.h>
     
    #define MAXS 20
     
    char *match( char *s, char ch1, char ch2 );
     
    int main()
    {
        char str[MAXS], ch_start, ch_end, *p;
        
        scanf("%s", str);
        getchar();
        scanf("%c %c", &ch_start, &ch_end);
      
        p = match(str, ch_start, ch_end);
        printf("%s\n", p);
     
        return 0;
    }
     
    /* 你的代码将被嵌在这里 */
    char *match( char *s, char ch1, char ch2 )
    {
        //char *p,*q;
        int index1=-1;  //记住起始索引位置
      
        int i=0;
        char *p=s,*q=NULL;
        //q=&ch1;//逻辑上有点问题
        for(;*(p+i)!='\0';i++)
        {
            //if(*p<=ch1 && *p>=ch2)
            //这判断语句不符合逻辑!
            if(*(p+i)==ch1 && index1==-1)
            {
                
                index1=i;
                
            }
            if(*(p+i)==ch2 && i>=index1)
            {
                *(p+1+i)='\0';
                break;
            
            }
            
        }
        q=p+index1;
        
        return q;
    }
     
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月7日

悬赏问题

  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题