Đến từ một nền Java Tôi đang học C, nhưng tôi thấy những thông báo lỗi biên dịch mơ hồ ngày càng bực bội. Đây là mã của tôi:Bài tập làm cho con trỏ từ số nguyên mà không cần cast
/*
* 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;
}
Điều này tạo ra hai cảnh báo.
- phân công làm cho con trỏ từ số nguyên mà không có một dàn diễn viên
- cString1 = strtolower (cString1);
- cString2 = strToLower (cString2);
- trở lại làm cho số nguyên từ con trỏ mà không có một dàn diễn viên
- trở CString;
Ai đó có thể giải thích những cảnh báo này?
(+1) điều này cho biết thêm giá trị tự động trả lời –
Điều này không ** trực tiếp ** giải quyết chủ đề của câu hỏi của bạn - một giải pháp gián tiếp: D để loại bỏ câu trả lời tự động của trình biên dịch là apt: D –
Ok, làm rõ câu trả lời ở đây. – Uri