apa yang dilakukan program ini?

L

lcs81

Guest
1 main () (
2 int no, i, j, k;
3 printf ( "Masukkan tiga nilai:");
4 no = scanf ( "% d% d% d", & i, & j, & k);
5 sementara (tidak ada <3) (

7 while (getchar ()! = '\ N') ()

8 printf ( "Anda hanya tipe% d nilai dengan benar \ n", no);
9 printf ( "Coba lagi:");
10 num_input = scanf ( "% d% d% d", & i, & j, & k);

11))Ketika line 7 doesnt keluar, program akan loop tak terhingga.
Aku hanya benar-benar dont undestant mengapa tidak bisa mengabaikan baris 7.
Bisakah salah satu line 7 menjelaskan apa yang dilakukannya?

Apakah jalur 4 umum di digunakan? Apa itu artinya?

Terima kasih

 
i think

no = scanf ( "% d% d% d", & i, & j, & k);

ilegal.

 
Program anda tidak dapat dikompilasi karena jalur 10 "num_input" adalah tidak dideklarasikan.Saya menganggap Anda berarti "tidak".

Jika pertemuan tak terduga scanf teks yang tidak sesuai format string, ia meninggalkan bahwa input teks dalam sungai, jadi jika Anda mengulangi scanf, itu hits teks yang sama lagi (dan lagi, dan lagi, ...).Anda sementara loop menghapus teks yang tidak terduga dari input stream.

Anda belajar bahwa hal itu canggung untuk menggunakan scanf dengan pemulihan kesalahan.Sebaliknya, banyak programmer menggunakan fgets (untuk mengambil seluruh baris input) yang diikuti oleh sscanf untuk melewatkan baris.Try it!

Kode:

# include <stdio.h>int main (void)

(

int i, j, k;

char buf [100];while (1)

(

printf ( "Masukkan tiga nilai:");

if (NULL == fgets (buf, sizeof (buf), stdin))

(

printf ( "Akhir data input! \ n");

break;

)

jika (3 == sscanf (buf, "% d% d% d", & i, & j, & k))

(

printf ( "Sukses: i =% dj =% dk =% d \ n", i, j, k);

break;

)

printf ( "Coba lagi \ n");

)

return 0;

)
 
---------------- program sebelumnya --------------------------
1 main () (
2 int no, i, j, k;
3 printf ( "Masukkan tiga nilai:");
4 no = scanf ( "% d% d% d", & i, & j, & k);
5 sementara (tidak ada <3) (

7 while (getchar ()! = '\ N') ()

8 printf ( "Anda hanya tipe% d nilai dengan benar \ n", no);
9 printf ( "Coba lagi:");o=scanf("%d %d %d", &i, &j, &k);

O = 10 n
scanf ( "% d% d% d", & i, & j, & k);

11))
-------------------------------------------------- ---------------PERTANYAAN:

Ketika line 7 doesnt keluar, program akan loop tak terhingga.
Aku hanya benar-benar dont undestant mengapa tidak bisa mengabaikan baris 7.
Bisakah salah satu line 7 menjelaskan apa yang dilakukannya?

Apakah jalur 4 umum di digunakan? Apa itu artinya?

Baris 10 adalah 'tidak' bukan 'num_input'.
By the way, program ini dari salah satu buku yang menjelaskan didnt much!
tetapi saya mencoba program ini, it works.
Namun, seperti yang saya katakan, bila saluran 7 adalah mengabaikan, program akan mengeksekusi loop tak terbatas.
Isnt abouve program yang mirip dengan di bawah ini?

Program ---------------- 2 ----------------
int counter, num;
counter = 0;

while (counter <3) (
printf ( "tolong kunci di nomor ur: \ n");
scanf ( "% d", & num);
counter = counter 1;
)

--------------------------------------------Terima kasih

 
Bahkan saya berpikir bahwa garis 7 adalah hanya sebuah cara untuk berdiri dengan sampai pengguna jangan ketik tombol enter.Untuk memastikan bahwa pengguna memiliki entred kurang dari 3 nilai.

 

Welcome to EDABoard.com

Sponsor

Back
Top