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]\n", 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);

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 1 s 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!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?