Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用任何预定义函数在C中进行字符串匹配?_C_String - Fatal编程技术网

不使用任何预定义函数在C中进行字符串匹配?

不使用任何预定义函数在C中进行字符串匹配?,c,string,C,String,这是我的密码。我在循环的帮助下匹配字符串。我不想对它使用任何函数 int main() { int flag,j; char a[30]={'\0'}; char b[]="this is a dog"; printf("enter string \n"); gets(a); int p = strlen(b); for(j=0;j<p;j++) { if(a[j]=

这是我的密码。我在循环的帮助下匹配字符串。我不想对它使用任何函数

  int main()
  {
      int flag,j;
      char a[30]={'\0'};
      char b[]="this is a dog";

      printf("enter string \n");
      gets(a);

      int p = strlen(b);

     for(j=0;j<p;j++)
     {
         if(a[j]==b[j])
         {
             flag=0;
         }
         else
             flag=1;
         break;
     }
        if(flag==0)
           printf("yes");
        else
           printf("no");

    return 0;
  }
intmain()
{
int标志,j;
字符a[30]={'\0'};
char b[]=“这是一只狗”;
printf(“输入字符串\n”);
获得(a);
int p=strlen(b);

对于(j=0;j您的
break
语句超出了
else
,这会导致循环在第一次迭代后中断。您需要这个

else
{
     flag=1;
     break;
}

您的
break
语句超出了
else
,这会导致循环在第一次迭代后中断。您需要

else
{
     flag=1;
     break;
}

你在用斯特伦,你不需要

应匹配C字符串,直到其中一个字符串具有
'\0'
或其中一个字符不同为止

char* pa = a;
char* pb = b;
while (*pa != *pb && *pa && *pb) {
    ++pa; ++pb;
}

// a equals b if (*pa == *pb) == true
// BTW, in equality they will both be zero which is the stop condition for the loop

printf("strings are %s", (*pa == *pb) ? "equal" : "different");

你在用斯特伦,你不需要

应匹配C字符串,直到其中一个字符串具有
'\0'
或其中一个字符不同为止

char* pa = a;
char* pb = b;
while (*pa != *pb && *pa && *pb) {
    ++pa; ++pb;
}

// a equals b if (*pa == *pb) == true
// BTW, in equality they will both be zero which is the stop condition for the loop

printf("strings are %s", (*pa == *pb) ? "equal" : "different");

可能有用:。

可能有用:。

在不使用strlen的情况下执行此操作(预定义函数):

intmain(){
int标志=0,j,i=0;
char b[]=“这是一只狗\0”;
printf(“输入字符串\n”);
字符输入[50];//更改大小以补偿最大的输入
char get;//逐个收集输入字符的变量
get=getchar();//获取第一个字符
while(get!='\n'){//我假设\n标记了输入的结束
input[i]=get;//将该字符放入输入数组
i++;//犯罪计数器(替换strlen,因为它计算读取的数据量)
get=getchar();//获取下一个字符
}

对于(j=0;j在不使用strlen的情况下执行此操作)(预定义功能):

intmain(){
int标志=0,j,i=0;
char b[]=“这是一只狗\0”;
printf(“输入字符串\n”);
字符输入[50];//更改大小以补偿最大的输入
char get;//逐个收集输入字符的变量
get=getchar();//获取第一个字符
while(get!='\n'){//我假设\n标记了输入的结束
input[i]=get;//将该字符放入输入数组
i++;//犯罪计数器(替换strlen,因为它计算读取的数据量)
get=getchar();//获取下一个字符
}

对于(j=0;j而言,它应该类似于:

for(j=0;j<p;j++)
 {
     if(a[j]==b[j])
     {
         flag=0;
     }
     else 
     {
         flag=1;
         break;
     }
 }

if(flag==0)
       printf("yes");
else
       printf("no");

对于(j=0;j它应该类似于:

for(j=0;j<p;j++)
 {
     if(a[j]==b[j])
     {
         flag=0;
     }
     else 
     {
         flag=1;
         break;
     }
 }

if(flag==0)
       printf("yes");
else
       printf("no");

for(j=0;j这里看起来您忘记了a}--进行适当的缩进是很好的

for(j=0;j<p;j++)
{
  if(a[j]==b[j])
  {
     flag=0;
  }
  else
    flag=1;
  break;
}

for(j=0;j这里看起来您忘记了a}--进行适当的缩进是很好的

for(j=0;j<p;j++)
{
  if(a[j]==b[j])
  {
     flag=0;
  }
  else
    flag=1;
  break;
}
(j=0;j这是我的代码:

     int main(){
    int flag,j;
    char a[30]={'\0'};
     char b[]="This is a dog";
    printf("enter string \n");
     gets(a);
     int p = strlen(b);

         for(j=0;j<p;j++){
            if(a[j]==b[j]){
             flag=0;
            }else{
            flag=1;
            break;
           }
           }
       if(flag==0)
         printf("yes");
          else
        printf("no");
       return 0;
         }
intmain(){
int标志,j;
字符a[30]={'\0'};
char b[]=“这是一只狗”;
printf(“输入字符串\n”);
获得(a);
int p=strlen(b);
对于(j=0;j这是我的代码:

     int main(){
    int flag,j;
    char a[30]={'\0'};
     char b[]="This is a dog";
    printf("enter string \n");
     gets(a);
     int p = strlen(b);

         for(j=0;j<p;j++){
            if(a[j]==b[j]){
             flag=0;
            }else{
            flag=1;
            break;
           }
           }
       if(flag==0)
         printf("yes");
          else
        printf("no");
       return 0;
         }
intmain(){
int标志,j;
字符a[30]={'\0'};
char b[]=“这是一只狗”;
printf(“输入字符串\n”);
获得(a);
int p=strlen(b);


对于(j=0;j)您忘了问问题。这就像发布“树是绿色的”。您需要检查您输入的字符串的终止符。如果字符串
a
小于字符串
b
,该怎么办?break用于循环伙伴。。无需使用strlen()相反,只需循环直到找到终止\0实际上问题是它以错误的方式检查字符串。就像你忘记问问题一样。这就像发布“树是绿色的”。您需要检查输入字符串的终止符。如果字符串
a
小于字符串
b
,该怎么办?中断用于循环伙伴。无需使用strlen()相反,只需循环直到您发现终止\0实际上问题在于它以错误的方式检查字符串..就像请阅读问题的标题一样。是的,但是如果您阅读strcmp函数的内部,您可以做得更好。我们为什么要重新发明轮子?因为我认为他想学习如何编写此类函数。但就我个人而言我也不相信重新发明轮子,直到我想进入深海。请阅读问题的标题。是的,但如果你阅读strcmp函数的内部,你可以做得更好。为什么我们要重新发明轮子?因为我认为他想学习如何编写这样的函数。但我个人也不相信reinv让轮子转动直到我想进入深海。如果是作业,我想是的,那么他就不能用斯特伦:)我使用strlen是因为我把它作为一种习惯来发展..因为我忘记了很多次如何在C中获得长度..在使用java和其他语言之后..这不是一个家庭作业..如果是家庭作业,我认为是,那么他就不能使用strlen:)我使用strlen是因为我把它作为一种习惯来发展因为我忘记了很多次如何用C来计算长度在使用java和其他语言之后这不是一个家庭作业每次你用相同的字符循环时没有点设置标志为0没有点设置标志为0每次你用相同的字符循环有更好的方法来解决这个问题问题本身的方法,我想这一个确实回答了问题。(因为我想他只是想知道他做错了什么。)即使有比问题本身的方法更好的解决问题的方法,我想这一个确实回答了问题。(因为我猜他只是想知道自己做错了什么.)