2013-01-31 13 views
5

Bu soru aptal ya tuhaf bir şekilde soruyordu eğer öyleyse beni affet, C acemiyim. a newline character or not, anlayamadım -Gerçek bir koşul test edildikten sonra bir printf nasıl yapılır?

Ben C astar artı ve Bölüm-8 yılında örneklerden birini okuyorum kullanıcının girdiği olup olmadığını test bazı döngü. while (getchar() != '\n') ilk ch oldu test ediyor hepsinden

while (getchar() != '\n') 
       continue; 
      printf("Enter another character and two integers;\n"); 
      printf("Enter a newline to quit.\n"); 

İlk:

kod kısadır bu yüzden size gösterecektir: Ne ben anlamıyorum tam burada

int main(void) 
{ 
    int ch; /* character to be printed */ 
    int rows, cols; /* number of rows and columns */ 
    printf("Enter a character and two integers:\n"); 
    while ((ch = getchar()) != '\n') 
    { 
     if (scanf("%d %d",&rows, &cols) != 2) 
      break; 
     display(ch, rows, cols); 
     while (getchar() != '\n') 
      continue; 
     printf("Enter another character and two integers;\n"); 
     printf("Enter a newline to quit.\n"); 
    } 
    printf("Bye.\n"); 
    return 0; 
} 
void display(char cr, int lines, int width) // the function to preform the printing of the arguments being passed 

doğru girdi mi İkincisi, eğer bu doğruysa, devam nasıl devam ediyor printf ifadelerini atlayıp ilk sefere gitmiyorsunuz? yapması gereken şey değil mi? Tnx

+1

O sizin en büyük sorundur <--- "C astar artı okuyorum" .......... printf ifadeleri içeren ilişkiyi yok !! Bu kitabı ateşle öldür! RTFN –

+3

'Devam 'sadece sigara içiyor. Olsa daha iyi olur (getchar()! = '\ N'); '. –

+0

Teşekkür tahsis :) @Daniel Fischer – MNY

cevap

7

olduğundan while ifadesinden sonra hiçbir parantez, döngüye yalnızca bir sonraki satır eklenir. Yani, continue, yeni bir satır karakteri bulunana kadar while döngüsünü sürdürür ve ardından yürütme işlemi printf ifadelerine devam eder.

Bu eşdeğerdir:

while (getchar() != '\n') 
{ 
    continue; 
} 
+2

+1 burada soran kişinin gerçek problemine ulaşmak için. – HWende

+0

Cevabınız için çok teşekkürler! ama derleyici getchar() işlevini görürse, duracak ve kullanıcının bir karakter girmesini, sonra sınamanını ve sonra devam etmesini isteyecektir ... böylece bu getchar() arada bir önceki girişi test [email protected] – MNY

+1

@Nir Giriş arabelleğinde hala girişsiz giriş var iken, 'getchar()' sadece arabellekten bir karakter okur. Genellikle, stdin'den gelen girdiler, kullanıcı Return/Enter tuşuna bastıktan sonra programa gönderilir ve böylece sonuçta bulmak için 'getchar()' için tamponda her zaman bir satırsonu vardır. Arabellekte sarfiyatsız girdi yoksa ve akış kapalı veya bozuk değilse, 'getchar()', arabelleğe girdi gönderilinceye kadar engeller. –

1

devam

sadece iki printf önce while uygulanır sen \n girdiğinizde süre önce hattına içteki çıkmak böylece -s

printf("Enter another character and two integers;\n"); 
0

continue yakın while döngü için de geçerlidir.

while (stuff) 
    continue; 

while (stuf); 

(noktalı dikkat edin) ile aynıdır.

Sadece "koşul yanlış olana kadar döngü devam" demek. İşte

0

while() döngüsü yalnızca deyimi devam ilişkilidir. Yani

İlgili konular