关于这道c语言编程的解释

来源:百度知道 编辑:UC知道 时间:2024/07/08 01:57:46
这道编程什么意思,请逐一解释,越详细越好!
#include<stdio.h>
#include<string.h>
{
char str1[100],str2[100],*p,ch;
printf("Input 2 str:\n");
scanf("%s",str1);
scanf("%s",str2);
ch=str[0];
p=str2;
while(*p!=='\0')
{
if(ch==*p)
{
printf("%d\n",p-str2+1);
break;
}
p++;
}
printf("not found!");
}

特别是“p-str2+1”是什么意思呢?
打错了一句:*p!=='\0'应该为*p!='\0'!!!

#include后少了void main()
ch=str[0];应改为ch=str1[0];
break只能跳出一重循环,跳出了while后还会继续执行
printf("not found!"); 可以有很多种方法改,比如可以在把break改为return;或在while循环外设置一个标志,如下所示:
#include<stdio.h>
#include<string.h>
void main()
{
char str1[100],str2[100],*p,ch;
printf("Input 2 str:\n");
scanf("%s",str1);
scanf("%s",str2);
ch=str1[0];
p=str2;
int flag=1;//设置标志
while(*p!='\0')
{
if(ch==*p)
{
printf("%d\n",p-str2+1);
flag=0;
break;
}
p++;
}
if(flag==1)printf("not found!");
}
程序输出的是字符串str1[100]的第一个字符str1[0]在字符串str2[100]是否出现,若有,则输出它第一次在字符串str2[100]出现的位置(也可能是求str2中从首字符到它的长度,反正差不多的,你自己理解吧),否则就输出not found!;

应该是地址相减,然后再加1,很可能是算出数组的实际长度。

这里好像有问题,是不是应该是ch=str1[0]?
如果是这样的话,这个程序应该打出str2中str1首字母的位置(如果str2中有这个字母的话,否则打出"not found!").