在 if() 语句中使用 strcmp() 作为条件如何工作?
How does using strcmp() as a condition in an if() statement work?
下面伪代码的输出(它的伪代码因为它在语法上并不正确)产生 "computers"
strcpy(s1, "computer");
strcpy(s2, "science");
if(strcmp(s1, s2) < 0)
{
strcat(s1, s2);
}
else
{
strcat(s2, s1);
}
s1[strlen(s1) - 6] = '[=10=]';
我不清楚结果如何 "computers"。我无法理解在 if() 语句中如何使用 strcmp() 的逻辑
好的,首先让我们看一个代码的工作示例,然后我将解释它是如何工作的:
#include <stdio.h>
#include <string.h>
void main() {
char s1[100], s2[100];
strcpy(s1, "computer");
strcpy(s2, "science");
if(strcmp(s1, s2) < 0)
{
strcat(s1, s2);
}
else
{
strcat(s2, s1);
}
s1[strlen(s1) - 6] = '[=10=]';
printf("%s",s1);
}
变量 s1 设置为 "computer" 并且 s2 设置为 "science"。使用 strcmp() 完成的第一个字符串比较评估 s1 的值是否小于 s2 的值。如果是,则 s1 与 s2 连接,因此 s1 的新值将是 "computerscience"。否则,无论字符串具有相同的值还是 s2 大于 s1,s2 都会连接到 s1,s2 的结果值为 "sciencecomputer"。
导致 true 结果的 if 条件是 "computer" 小于 "science" 所以
s1 的值发生变化,变为 "computerscience"。然后从 s1 的长度中减去值 6,在恰好包含字符 "c" 的索引处,一个空字符被设置为该元素的值。所以,现在 s1 的值为 "computers[=33=]ience"。这意味着当 s1 传递给 printf() 时,该函数将打印每个字符,直到它到达空字符,然后函数停止显示空及其后面的字符。
下面伪代码的输出(它的伪代码因为它在语法上并不正确)产生 "computers"
strcpy(s1, "computer");
strcpy(s2, "science");
if(strcmp(s1, s2) < 0)
{
strcat(s1, s2);
}
else
{
strcat(s2, s1);
}
s1[strlen(s1) - 6] = '[=10=]';
我不清楚结果如何 "computers"。我无法理解在 if() 语句中如何使用 strcmp() 的逻辑
好的,首先让我们看一个代码的工作示例,然后我将解释它是如何工作的:
#include <stdio.h>
#include <string.h>
void main() {
char s1[100], s2[100];
strcpy(s1, "computer");
strcpy(s2, "science");
if(strcmp(s1, s2) < 0)
{
strcat(s1, s2);
}
else
{
strcat(s2, s1);
}
s1[strlen(s1) - 6] = '[=10=]';
printf("%s",s1);
}
变量 s1 设置为 "computer" 并且 s2 设置为 "science"。使用 strcmp() 完成的第一个字符串比较评估 s1 的值是否小于 s2 的值。如果是,则 s1 与 s2 连接,因此 s1 的新值将是 "computerscience"。否则,无论字符串具有相同的值还是 s2 大于 s1,s2 都会连接到 s1,s2 的结果值为 "sciencecomputer"。
导致 true 结果的 if 条件是 "computer" 小于 "science" 所以 s1 的值发生变化,变为 "computerscience"。然后从 s1 的长度中减去值 6,在恰好包含字符 "c" 的索引处,一个空字符被设置为该元素的值。所以,现在 s1 的值为 "computers[=33=]ience"。这意味着当 s1 传递给 printf() 时,该函数将打印每个字符,直到它到达空字符,然后函数停止显示空及其后面的字符。