有没有人带带写一下,借鉴其他类似的写不出来

从键盘输入一个字符,找出该字符在已知字符串“Hello,world!”中第一次出现的位置。若不在该字符串中,则打印“该字符不在已知字符串中”。


#include <stdio.h>

int main()
{
    char arr[] = "Hello,world!";
    int i = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);
    int ch = 0;
    int flag = 0;
    ch = getchar();
    for (i = 0; i < sz; i++)
    {
        if (ch == arr[i] && i != sz - 1)
        {
            printf("找到了,该字符的下标为:%d", i);
            flag++;
            break;
        }
    }
    if (flag = 0)
    {
        printf("找不到");
    }
    return 0;
}

有不清楚的可以继续问,我可以解答

望采纳,谢谢

img

#include"stdio.h"
void Str_FirFind(char *,char *);
int main(void)
{
    char ch;
    int i=0;
    char a[256] = {0};
    while((ch=getchar())!='\n')//一直接收缓冲区的字符。直至收到回车
    {
           a[i]=ch;
           i++;
    }
    a[i]='\0';    //加上串尾符
    Str_FirFind("Hello,world!",a);
    return 0;
 
}
 
void Str_FirFind(char *str_target,char *str_use)
{
    char *str_temp1 = NULL;
    char *str_temp2 = NULL;
    int count_i,count_j;
    int flg_find = 0;
    
    for(count_i = 1;*str_target != '\0';count_i++) {
        if(*str_target == *str_use){
            str_temp1 = str_target;
            str_temp2 = str_use;
            for(count_j = 1;*str_temp2 != '\0';count_j++){    //以要查找的字符串长度为循环回数
                str_temp1++;
                if(*str_temp1 == '\0'){                        //判断是否到目标字符串的结尾
                    break;
                }
                str_temp2++;
                if(*str_temp2 == '\0'){                        //判断是否到查找字符串的结尾
                    flg_find = 1;
                    break;
                }                
                if(*str_temp1 != *str_temp2){                
                    break;                                    //出现不相等的情况即返回上层循环重新查找
                }else if(*(str_temp2 + 1) == '\0'){         //如果下一个字符为结尾,那么证明已经找到
                    flg_find = 1;
                    break;
                }
            }
        }
        if(flg_find == 1){
            printf("First Position: %d\n",count_i);
            return;
        }
        str_target++;
    }
    printf("No Find ""%s""\n",str_use);
}  

#include<stdio.h>
int main()
{
char arr[] = "hello,world!";
char x = 0;
scanf("%c", &x);
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < sz; i++)
{
if (arr[i] == x)
{
printf("该字符第一次出现的位置在下标为%d处\n", i);
return 0;
}
}
printf("找不到\n");
return 0;
}



#include <stdio.h>
#include <string.h>

int main()
{
    char str[] = "Hello,world!";
    char car = '\0';
    char *car_addr = 0;
    
    car = getchar();
    car_addr = strchr(str,car);
    if(car_addr){
        printf("%d\n",(int)(car_addr - str));
    }else{
        printf("该字符不在已知字符串中\n");
    }

    return 0;
}

strchr函数功能为在一个串中查找给定字符的第一个匹配之处。函数原型为:char *strchr(const char *str, int c),即在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。strchr函数包含在C 标准库 <string.h>中。所以了解strchr函数即可