2016-05-26 20 views
5

Tôi đang sử dụng getchar() trong khi viết một chương trình trong C (scanf là không được phép được nêu ra tại thời điểm này trong khóa học.) Tôi đã tự hỏi nếu mỗi lần tôi gọi nó nếu nó chuyển sang kế tiếp; bao gồm trong các hoạt động chuyển nhượng. Ví dụ; Tôi đang cố gắng đọc trong một đôi từ giao diện điều khiển; và quyết định xem nó có dấu âm ở mặt trước không. Nếu nó không; Tôi muốn gán một biến neg là 1 (vì vậy mà tôi có thể nói nếu kết quả cuối cùng phải được trả về tiêu cực) và sau đó tôi muốn chuyển sang ký tự tiếp theo để thực hiện tính toán gấp đôi thực tế của tôi và những gì không. cũ)sử dụng hàm getchar() trong C; nó di chuyển đến char tiếp theo mỗi khi tôi sử dụng nó? Bao gồm trong các hoạt động gán?

int x = getchar(); 
     int neg = 0; 

     if(x == '-') { 
     neg = 1; 
    x = getchar(); // will this make it so the next time I use the x   
     }   // variable it will be past the negative sign and to the 
        //first actual digit? 
+0

Sắp xếp - đọc xảy ra ngay khi 'x = getchar();' được thực thi, không phải lần sau 'x' được sử dụng. –

+0

Những gì bạn làm với giá trị trả về của bất kỳ hàm nào, bao gồm 'getchar()', không có tác động gì đến chính chức năng của nó khi bạn gọi nó. Cụ thể, việc gán giá trị trả về cho biến không có tác động như vậy. Có những yếu tố khác điều chỉnh hành vi chức năng, chẳng hạn như các giá trị của các đối số của chúng, nhưng các hàm không biết và cũng không quan tâm bạn làm gì với các giá trị trả về của chúng. –

Trả lời

5

Vâng, mỗi khi bạn gọi getchar() nó sẽ đọc tiếp theo nhân vật (với điều kiện có tiếp theo nhân vật để đọc).

Trích dẫn C11, chương §7.21.7.6

Chức năng getchar() trả về ký tự tiếp theo từ input stream trỏ đến bởi stdin.

Trong trường hợp không có gì hợp lệ để được đọc,

là Nếu dòng là end-of-file, chỉ số end-of-file cho dòng được thiết lập và getchar trả về EOF. Nếu xảy ra lỗi đọc, chỉ báo lỗi cho luồng được đặt và getchar trả lại EOF.

Các vấn đề liên quan