来自Java背景我正在学习C语言,但是我发现那些模糊的编译器错误消息越来越令人沮丧。这是我的代码:赋值使得整型指针不会转换
/*
* PURPOSE
* Do case-insensetive string comparison.
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int compareString(char cString1[], char cString2[]);
char strToLower(char cString[]);
int main() {
// Declarations
char cString1[50], cString2[50];
int isEqual;
// Input
puts("Enter string 1: ");
gets(cString1);
puts("Enter string 2: ");
gets(cString2);
// Call
isEqual = compareString(cString1, cString2);
if (isEqual == 0)
printf("Equal!\n");
else
printf("Not equal!\n");
return 0;
}
// WATCH OUT
// This method *will* modify its input arrays.
int compareString(char cString1[], char cString2[]) {
// To lowercase
cString1 = strToLower(cString1);
cString2 = strToLower(cString2);
// Do regular strcmp
return strcmp(cString1, cString2);
}
// WATCH OUT
// This method *will* modify its input arrays.
char strToLower(char cString[]) {
// Declarations
int iTeller;
for (iTeller = 0; cString[iTeller] != '\0'; iTeller++)
cString[iTeller] = (char)tolower(cString[iTeller]);
return cString;
}
这会产生两个警告。
- 赋值时将整数指针,未作铸造
- cString1 =用strtolower(cString1);
- cString2 = strToLower(cString2);
- 返回时将指针整数,未作铸造
- 返回CSTRING;
有人可以解释这些警告吗?
(+1)这增加了值autopulated的答案 – 2010-01-15 19:08:50
这不**直接**解决您的问题的主题,但它 - 一个间接的解决方案:D以消除编译器警告汽车的答案更加贴切:D – 2010-01-15 19:15:33
好的,在这里澄清答案。 – Uri 2010-01-15 19:45:17