Sherryr丶 2024-02-04 23:48 采纳率: 0%
浏览 8

C Primer Plus编程练习问题

设计并测试一个函数,搜索第1个函数中形参指定的字符串,并在其中查找第2个函数的形参指定的字符首次出现的位置。如果成功,函数返回指向该字符的指针;如果在字符串中未找到指定字符,返回空指针。


#include<stdio.h>
#define SIZE 40
char* search_words(char* st, char c);

int main(void)
{
    char words[SIZE];
    char str = 's';
    char* ptr;
    puts("Please input some words:");
    fgets(words, SIZE, stdin);
    
    while (str!='Q')
    {
        puts("Enter a char to find (Q for Quit):");
        while ((str = getchar()) == '\n')continue;
        if ((ptr = search_words(words, str)) != NULL)
            printf("Found the char %c in the %p\n", *ptr, ptr);
        else
            printf("Char %c not found. Try another?\n", str);
    }
    return 0;
}

char* search_words(char* st, char c)
{
    while (*st != '\0')
    {
        if (*st == c)
            return st;
        else
            st++;
        return NULL;
    }
}

问题是:我的目的是如果输入Q,退出程序,在我的代码中如何实现。现在的情况如果输入Q,程序会报Char Q not found. Try another?,然后结束程序,如何修改能保证退出程序的同时,又不显示这句话?

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-04 23:50
    关注

    引自免费微信小程序:皆我百晓生

    为了实现当输入字符Q时退出程序,同时不显示"Char Q not found. Try another?"这一消息,你需要在main函数中对str的值进行判断,并在找到Q时直接结束循环和程序。以下是修改后的main函数:

    #include<stdio.h>
    #define SIZE 40
    char* search_words(char* st, char c);
    
    int main(void)
    {
        char words[SIZE];
        char str;
        
        puts("Please input some words:");
        fgets(words, SIZE, stdin);
        
        while (1) // 使用无限循环,直到满足退出条件为止
        {
            puts("Enter a char to find (Q for Quit):");
            str = getchar();
            
            // 直接处理'Q'作为退出条件
            if (str == 'Q')
            {
                break; // 跳出循环,结束程序
            }
            
            // 清理可能遗留的换行符
            while (str == '\n')
            {
                str = getchar();
            }
    
            // 搜索指定字符
            char* ptr = search_words(words, str);
    
            if (ptr != NULL)
                printf("Found the char %c in the string at address %p\n", *ptr, ptr);
            else
                printf("Char %c not found. Try another?\n", str);
        }
    
        return 0;
    }
    
    // search_words 函数保持不变
    
    char* search_words(char* st, char c)
    {
        while (*st != '\0')
        {
            if (*st == c)
                return st;
            else
                st++;
        }
        
        return NULL;
    }
    

    现在,当你输入Q时,程序会立即结束而不会打印错误信息。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月4日

悬赏问题

  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数