刘若北 发表于 2022-11-29 21:57:22

小甲鱼C语言作业S1E19中实现strcmp函数疑问

https://fishc.com.cn/forum.php?mod=viewthread&tid=70626&extra=page%3D1%26filter%3Dtypeid%26typeid%3D570

上面链接 动动手第0题 中

      for (i = 0; i < n; i++)
      {
                if (str1 - str2)
                {
                        i++;
                        break;
                }
      }

      printf("比较的结果是:%d\n", str1 - str2);

请问,i++的意义是啥?后面又输出的i-1{:5_94:}



tommyyu 发表于 2022-11-29 22:22:54

我感觉完全可以去掉,但是不知道为什么要这样写

jackz007 发表于 2022-11-29 22:36:24

      for(i = 0 ; str1 && str2 && str1 == str2 ; i ++) ;
      printf("比较的结果是:%d\n" , str1 - str2)             ;

homeskating 发表于 2022-11-30 17:25:22

#include <stdio.h>

#define MAX 1024

int main()
{
      char str1;
      char str2;
      int i = 0;
      unsigned int n;

      printf("请输入第一个字符串:");
      while ((str1 = getchar()) != '\n')
                ;

      printf("请输入第二个字符串:");
      i = 0;
      while ((str2 = getchar()) != '\n')
                ;

      printf("请输入比较的字符数:");
      scanf("%u", &n);

      for (i = 0; i < n; i++)
      {
                if (str1 - str2>0)
                {
                        i++;//i++向后移一位,应该是为了保障\0结束符
                        break;
                }
      }

      printf("比较的结果是:%d\n", str1 - str2);//i-1忽略\0字符串结束符

      return 0;
}

helloooo 发表于 2022-12-8 23:33:28

第2个i++是为了和第一个for循环中的i++匹配,保证不管最后结果是不是0,printf中的i-1都指向正确的元素。
页: [1]
查看完整版本: 小甲鱼C语言作业S1E19中实现strcmp函数疑问