从键盘输入一个字符,找出该字符在已知字符串“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;
}
有不清楚的可以继续问,我可以解答
望采纳,谢谢
#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函数即可