String 关于比较字符串和整数的问题。CS50 Pset 4
我正在学习CS50PSET4 据我所知,我键入了相同的单词,例如:“Emma”。当我比较它们时,它们将不相同,因为它们将它存储在内存中的两个不同地址中 但我对整数感到困惑,即使我输入了相同的数字,它们也存储在内存中的两个不同地址中。但当我比较它们时,它们是相同的 有人能告诉我我误解了什么吗String 关于比较字符串和整数的问题。CS50 Pset 4,string,integer,cs50,String,Integer,Cs50,我正在学习CS50PSET4 据我所知,我键入了相同的单词,例如:“Emma”。当我比较它们时,它们将不相同,因为它们将它存储在内存中的两个不同地址中 但我对整数感到困惑,即使我输入了相同的数字,它们也存储在内存中的两个不同地址中。但当我比较它们时,它们是相同的 有人能告诉我我误解了什么吗 #include <stdio.h> #include <cs50.h> int main(void) { int i = get_int("i: ");
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int i = get_int("i: ");
int j = get_int("j: ");
char *s = get_string("s: ");
char *t = get_string("t: ");
if (i == j)
{
printf("Same\n");
printf("%p\n", &i);
printf("%p\n", &j);
}
else
{
printf("Different\n");
printf("%p\n", &i);
printf("%p\n", &j);
}
if (s == t)
{
printf("Same\n");
printf("%p\n", &s);
printf("%p\n", &t);
}
else
{
printf("Different\n");
printf("%p\n", &s);
printf("%p\n", &t);
}
}
#包括
#包括
内部主(空)
{
int i=获取_int(“i:”);
int j=获取int(“j:”);
char*s=get_字符串(“s:”);
char*t=get_字符串(“t:”);
如果(i==j)
{
printf(“相同的\n”);
printf(“%p\n”,&i);
printf(“%p\n”,&j);
}
其他的
{
printf(“不同的\n”);
printf(“%p\n”,&i);
printf(“%p\n”,&j);
}
如果(s==t)
{
printf(“相同的\n”);
printf(“%p\n”,&s);
printf(“%p\n”,&t);
}
其他的
{
printf(“不同的\n”);
printf(“%p\n”,&s);
printf(“%p\n”,&t);
}
}
不能使用==
比较两个字符串。为了成功地执行此操作,您可以使用名为strcmp
的函数,或者创建一个循环来迭代字符串中的所有字符。(include#include
以使此工作正常。这是您的代码的外观:
#include <stdio.h>
#include <cs50.h>
#include <string.h>
int main(void)
{
int i = get_int("i: ");
int j = get_int("j: ");
char *s = get_string("s: ");
char *t = get_string("t: ");
if (i == j)
{
printf("Same\n");
printf("%p\n", &i);
printf("%p\n", &j);
}
else
{
printf("Different\n");
printf("%p\n", &i);
printf("%p\n", &j);
}
if (strcmp(s, t) == 0)
{
printf("Same\n");
printf("%p\n", &s);
printf("%p\n", &t);
}
else
{
printf("Different\n");
printf("%p\n", &s);
printf("%p\n", &t);
}
}
#包括
#包括
#包括
内部主(空)
{
int i=获取_int(“i:”);
int j=获取int(“j:”);
char*s=get_字符串(“s:”);
char*t=get_字符串(“t:”);
如果(i==j)
{
printf(“相同的\n”);
printf(“%p\n”,&i);
printf(“%p\n”,&j);
}
其他的
{
printf(“不同的\n”);
printf(“%p\n”,&i);
printf(“%p\n”,&j);
}
if(strcmp(s,t)==0)
{
printf(“相同的\n”);
printf(“%p\n”,&s);
printf(“%p\n”,&t);
}
其他的
{
printf(“不同的\n”);
printf(“%p\n”,&s);
printf(“%p\n”,&t);
}
}
strcmp
输入两个字符串,如果相同,则输出0
,如果不相同,则输出任何其他数字。(希望这有帮助!!:)==
总是比较值,但指针值是表示内存地址的数字,而整数值只是没有任何间接或内存位置的整数。所以你的意思是字符串实际上是指针值?但整数不是吗?不完全是,char*
(如果以null结尾,则称为字符串)是指向字符串第一个字符的指针。它的值是一个数字内存位置(打印它,请参阅,printf(“%p\n”,s)
)。整数也是一个数字值,它实际上是它自己的值。如果要比较字符串的值,而不是内存位置,请使用strcmp。