01/10/2018, 11:11
Bài tập với chuỗi
Mình có bài tập là in ra tổng số kí tự của từng từ trong chuỗi, và từ đó. Thầy mình bắt viết theo driver của thầy nên mình tìm hoài không ra cách. Thầy mình yêu cầu dùng getchar() và ungetc(). Mình không biết làm sao để con trỏ giữ lại vị trí trong vòng lặp.
Code mình cần viết sẽ nằm trong getword(char *w).
trickier to master
p0 sẽ in ra:
n=8, s=[trickier]
n=2, s=[to]
n=6, s=[master]
n=0, s=[] trả lại 0 và mảng rỗng nếu là dấu xuống dòng
n=-1, s=[] nếu gặp EOF thì trả lại -1 và mảng rỗng
Mình
Driver p0.c:
> #include "getword.h"
> int main()
> {
> int c;
> char s[STORAGE];
> for( ; ; ) {
> (void) printf("n=%d, s=[%s]
", c = getword(s), s);
> if (c == -1) break;
> }
> }
Header getword.h:
> #include <stdio.h>
> #include <string.h>
> #include <strings.h>
> #define STORAGE 255
> int getword(char *w);
Bài liên quan
Cái này là cài đặt hàm
strtok
:v… nếu không có hai hàm hoạt động trên stream. Cái này hơi kì kì, vậy input là từ đâu?mình nghĩ input là mảng char s. Thầy mình bắt xài getch() với ungetch() nên mình không hiểu làm sao để trả về giá trị của mảng s trong hàm getword.
Lên hỏi lại thầy. Quyền lợi của bạn mà.
Bạn viết một hàm lấy ký tự dùng
getchar
gán vào mảng 1s
rồi dùng mảng đó.Bạn tham khảo hàm
getline
trong các ví dụ dưới đây:http://clc-wiki.net/wiki/K%26R2_solutions:Chapter_1:Exercise_18
Cảm ơn bạn. Nhưng làm sao để mình lưu lại vị trí con trỏ. Vì driver sẽ lặp lại nhiều lần chứ không trả về 1 lần chạy duy nhất.
Bạn cho mình hỏi nếu mình dùng delimiter (0 byte) thì làm cách nào để chèn vào chuỗi đó.
Đây là lập trình driver linux à bạn?
khong ban. lap trinh he dieu hanh
Bạn lập trình cho nền tảng HĐH linux ah? có thể cho tui xin tài liệu đc không? Cảm ơn bạn nhiều!