我在比较整数方面遇到了问题。我知道在C中你可以使用strcmp比较字符串。我正在寻找一种方法来比较数组中的整数。我在网上找到了一个例子但它比较了字符串。我似乎找到了一种改变为整数的方法
我想知道我是否可以帮助改变下面的代码以比较整数。
char sname[30]; int i;
printf("Please enter the class numbers:\n");
scanf("%s", &sname);
for (i = 0; i<tail; i++)
if (strcmp(sname, classschedule[i].classNumber) == 0)
{
return i;
}
答案 0 :(得分:3)
做出假设classschedule[i].classNumber
是int
int sname; int i;
printf("Please enter the class numbers:\n");
scanf("%d", &sname); /* Should check the return value here! */
for (i = 0; i<tail; i++) { /*Always put on the braces - otherwise it is embarrassing when your trousers fall down*/
if (sname == classschedule[i].classNumber)
{
return i;
}
}
答案 1 :(得分:0)
对于一个简单的整数,您可以使用标准比较运算符(&lt;,&lt; =,&gt;,&gt; =,==)。对于整数数组,您可以定义自己的比较函数:
int CompareIntegerArrays(int* a0, int len0, int* a1, int len1)
{
int minlen = min(len0, len1);
int i;
for (i = 0; i < minlen; ++i) {
int diff = a0[i] - a1[i];
if (diff != 0) {
return diff;
}
}
return len0 - len1;
}
答案 2 :(得分:0)
标准C库中的各种字符串比较函数起作用,因为字符串的结尾由特殊字符(二进制零)表示。因此,各种函数基本上都是逐元素进行元素比较,直到到达其中一个字符串的末尾。
因此,例如strcpy()函数可以写成:
char * strcpy (char *dest, char *src)
{
int i = 0;
while (dest[i] = src[i]) i++; // copy a char from src to dest until zero found.
return dest;
}
对于整数数组,您实际上不能依赖于指示数组末尾的特殊字符,因为任何整数值都可以是有效的数组元素值,因此您必须知道数组的长度。
int iarray1[30], iarray2[30];
// ... values are put into the two arrays
int i;
bool bSame = true;
for (i = 0, bSame=true; bSame && i < 30; i++) bSame = bSame && (iarray1[i] == iarray2[i]);
您可能希望拥有一个可以进行比较的函数,例如:
bool IntArrayCmp (int *ia1, int *ia2, size_t ncount)
{
bool bSame = true;
size_t nindex = 0;
for (nindex = 0, bSame = true; bSame && nindex < ncount; nindex++) bSame = bSame && (ia1[nindex] == ia1[nindex]);
return bSame;
}
接下来出现的问题是长度不同的数组以及比较函数是否应该要求每个数组的长度允许函数确定两个整数数组是否具有相同数量的元素决定这两个函数是否相同。
答案 3 :(得分:0)
You cannot use strcmp for Integers as it is only used for strings
Try This Code-->
char sname[30]; int i;
printf("Please enter the class numbers:\n");
scanf("%s", &sname);
for (i = 0; i<tail; i++)
{
if (sname == classschedule[i].classNumber)
{
return i;
}
}
This should work