01/10/2018, 11:04

Ngôn ngữ C, sao chép nội dung nhập vao

Chào cả nhà, đây là chương trình sao chép nội dung nhập vào, khi in ra là bỏ khoảng trống.
char nhap;

while((nhap = getchar())!= EOF)
    if (nhap!=32)
    putchar(nhap);
 return 0;

Cho mình hỏi 2 câu hỏi:

  1. dòng if: nhap != 32, nghĩa là gì vậy, tại sao phải khác khoảng trắng ( mình hiểu 32 là khoảng trắng).
    2) vậy nếu muốn sao chép nguyên cả nội dung mà KHÔNG MUỐN BỎ khoảng trắng thì mình phải làm sao
    Cảm ơn cả nhà.
Henry viết 13:14 ngày 01/10/2018

###1
khi bạn dùng

nhap = getchar()

Sau đó nó sẽ đợi bạn nhập cái gì đó. Nếu bạn nhập vào

hoc lap trinh

Thì nguyên cái đống đó vào buffer. Hãy tưởng tượng cái đống đó là một chuỗi

'hoc lap trinh'

Và rồi, getchar() lấy một kí tự trong buffer tới khi nào nó eof có nghĩa là không còn gì mà nhận. Sau đó biến nhap được nhận từng chữ cái trong chuỗi đó. Nếu nó khác 32space thì nó không putchar in ra không thì ngược lại.
Rồi khi mà hết rồi là eof thì return kết thúc thôi
###2
Cái này thì mình sẽ dùng \n thay thế cho 32

Trần Hoàn viết 13:19 ngày 01/10/2018

put: đặt vào
putchar: đặt ký tự vào
=> putchar(ahjhj): in ký tự ahjhj ra màn hình

hàm getchar() trả về kiểu char, nên tuy mình không thấy dòng khai báo biến nhap nhưng mình cũng đoán được nhap là kiểu char
EOF là ký tự được tạo ra khi ấn Ctrl Z hoặc F6

Như vậy, đoạn chương trình của bạn được diễn tả như sau:

  1. trong khí ((nhap = getchar() ) và (nhap khác EOS)
  2. Nếu (nhap khác “khoảng trống”)
  3. thì int ra nhap

Từ đây, bạn suy ra rằng nếu muốn chương trình in ra cả khoảng trắng thì tức là không kiểm tra khoảng trắng nữa:

  1. trong khí ((nhap = getchar() ) và (nhap khác EOS)
  2. thì int ra nhap
Bài liên quan
0