Tôi cần nhận chuỗi động nhưng khi cần nhiều hơn một chuỗi, tôi cần sử dụng các hàm. Cho đến nay tôi đã viết này (tôi đặt // **** ở nơi tôi nghĩ rằng có thể là sai)Lấy chuỗi có hàm C
char* getstring(char *str);
int main() {
char *str;
strcpy(str,getstring(str));//*****
printf("\nString: %s", str);
return 0;
}
char* getstring(char str[]){//*****
//this part is copy paste from my teacher lol
char c;
int i = 0, j = 1;
str = (char*) malloc (sizeof(char));
printf("Input String:\n ");
while (c != '\n') {//as long as c is not "enter" copy to str
c = getc(stdin);
str = (char*)realloc(str, j * sizeof(char));
str[i] = c;
i++;
j++;
}
str[i] = '\0';//null at the end
printf("\nString: %s", str);
return str;//******
}
printf
trong hàm đang làm việc nhưng không trở lại trong main
chức năng. Tôi đã thử trả lại void
, loại bỏ *s
hoặc thêm, thực hiện str2
khác và truy cập vào strcpy
ở đó hoặc không sử dụng strcpy
. Không có gì có vẻ hiệu quả. Tôi có bỏ lỡ điều gì đó không? Hoặc có thể điều này là không thể ở tất cả // Cảm ơn bạn rất nhiều cho câu trả lời của bạn
Chúng tôi phải đấu tranh trong năm 1 ở đây. Những thứ dễ dàng trong C là không bao giờ dễ dàng cho hơn 5% số người. –
yêu cầu giáo viên của bạn ngừng truyền malloc – coderredoc
@coderredoc Đúc là tùy chọn? Tôi sẽ tự kỷ luật, nếu không có gì khác. –