问题一://第一个问题是这里难道不用加b = '\0'吗 ?
如果这个地方要加 为何前面
printf("请输入第一个字符串:");
for(i = 0; (a = getchar()) != '\n'; i++) 又不加?
getchar()是从输入终端获取字符; 再看char b[MAX];(针对这句,有些编译器会初始化0,有些不会), 所以避免不必要的麻烦还是初始化下char b[MAX]={'\0'};
问题二:
//第二个问题是这里为什么要i-1,直接写a - b不行吗?
先不说这句,先回到
if(a - b)
{
i++;
break;
}
这是什么意思,我真看不懂?代码不知道是你从哪里弄的,如果是老师的,那必定也是不对的。
所以我改正代码后是:
- #define MAX 1024
- int main()
- {
- char str1[MAX];
- char str2[MAX];
- int i = 0;
- unsigned int n;
- printf("请输入第一个字符串:");
- while ((str1[i++] = getchar()) != '\n')
- ;
- printf("请输入第二个字符串:");
- i = 0;
- while ((str2[i++] = getchar()) != '\n')
- ;
- printf("请输入比较的字符数:");
- scanf("%u", &n);
- for (i = 0; i < n; i++)
- {
- if ((str1[i] - str2[i]) !=0) // 我认为这里应该是比效第i个字符
- {
- i++;
- break;
- }
- }
- printf("比较的结果是:%d\n", str1[i-1] - str2[i-1]);
- return 0;
- }
复制代码
回到 //第二个问题是这里为什么要i-1,直接写a - b不行吗? 看了这里 if ((str1[i] - str2[i]) !=0) 我觉得你应该明白了,不要用我多说。