Mã này được cho là bỏ qua khoảng trắng và trả về một từ tại một thời điểm. Một vài câu hỏi về mã này: Khi mã được gửi đến từ * ++ = c; dòng tôi nhận được một bãi chứa lõi. Tôi đã viết dòng này một cách chính xác chưa? và trả về đúng. Và tôi có cần phân bổ bộ nhớ để lưu trữ từ không?Bỏ qua khoảng trắng và trả lại một từ tại một thời điểm trong C
//get_word
int get_word(char *word,int lim){
int i=0;
int c;
int quotes=0;
int inword = 1;
while(
inword &&
(i < (lim-1)) &&
((c=getchar()) != EOF)
){
if(c==('\"')){//this is so i can get a "string"
if (quotes) {
inword = 0;
}
quotes = ! quotes;
}
else if(quotes){ //if in a string keep storing til the end of the string
*word++=c;//pointer word gets c and increments the pointer
i++;
}
else if(!isspace(c)) {//if not in string store
*word++=c;
i++;
}
else {
// Only end if we have read some character ...
if (i)
inword = 0;
}
}
*word='\0'; //null at the end to signify
return i; //value
}
Bạn có phiền không nếu tôi xóa bỏ giá trị trả về của 'malloc'? –
@R .., mà không có lỗi này. 'trả về' void * ': lỗi C2440: 'khởi tạo': không thể chuyển đổi từ 'void *' sang 'char *' Chuyển đổi từ 'void *' thành con trỏ thành non-'void 'yêu cầu một thuật ngữ rõ ràng" –
@Steve: Sau đó bạn có thể đang sử dụng trình biên dịch C++ để biên dịch mã C :) – fredoverflow