자바 배경에서 배우기 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)이 값은 자동 채우기의 대답 –
을 추가합니다. ** 직접 ** 귀하의 질문에 대한 주제를 직접적으로 다루지는 않습니다 - 간접적 인 해결책 : D 컴파일러 경고 자동 응답을 없애기 위해 더 적합합니다 : D –
좋아, 여기서 답을 명확히했다. – Uri