爱学习的阿瑶 发表于 2022-1-18 22:32:58

标?的看不懂,麻烦大哥们解释一下,谢谢

#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)//?
                {
                        i++;
                        break;
                }
      }

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

      return 0;
}

YSW9527 发表于 2022-1-18 23:20:36

第一处和第二处都是一个意思,就是判断字符数组当前位置的字符是否为换行符,\\n是转义字符相当于键盘上的回车键,就是当接收到的字符不是回车时才执行while语句里面的内容,第三处属实没看懂

翼是孤独 发表于 2022-1-18 23:32:02

(1)while ((str1 = getchar()) != '\n');
当你输入的字符不是'\n'的时候,就一直执行(str1 = getchar()) != '\n',这样你就可以一直输入字符到str1[]中。
当你输入字符是'\n',就会结束循环。--------C语言中'\n' 是回车换行,你按回车键就相当于输入了'\n'

(2)if (str1 - str2) 是比较字符是否相同
如果str1和 str2 中存储的字符相同,计算结果就是0,if(0),不进入if 代码块,此时字符相同,外层for循环继续执行,i++
不相同结果就不是0, if(非0)。进入if 代码块,i++后,break会跳出外层for循环
页: [1]
查看完整版本: 标?的看不懂,麻烦大哥们解释一下,谢谢