Tôi đang cố gắng đọc một dòng tại một thời điểm, có độ dài tùy ý, từ stdin tại dòng lệnh. Tôi không chắc liệu tôi có thể bao gồm GNU readline hay không và muốn sử dụng chức năng thư viện.Làm thế nào để đọc một dòng từ stdin, chặn cho đến khi dòng mới được tìm thấy?
Tài liệu tôi đã đọc gợi ý rằng getline
phải hoạt động, nhưng trong thử nghiệm của tôi, nó không chặn. Chương trình mẫu của tôi:
#include <stdio.h>
int main()
{
char *line = NULL;
if (getline(&line, NULL, stdin) == -1) {
printf("No line\n");
} else {
printf("%s\n", line);
}
return 0;
}
sản xuất No line
, làm cho nó không phù hợp để chấp nhận đầu vào của người dùng.
Làm cách nào để thực hiện việc này? Tôi biết nó không đáng kể, nhưng tôi đã không thể hình dung ra được.
'getline()' * does * block (chỉ được thử nghiệm trên 'stdin'). Bạn có thể gửi mã mẫu không? – LSerni
Bản sao có thể có của [Cách đọc một dòng từ bảng điều khiển trong C] (http://stackoverflow.com/questions/314401/how-to-read-a-line-from-the-console-in-c) –