C programlama ad ve soyadı sırayla yazdırmak

Hocam son olarak bu kodda scanf'ler için sadece ''%s'' yerine ''%[^\n]'' kullanınca tüm printf'lerin aynı anda yazdırma sebebi nedir ? Bunun sebebini de anlarsam içim rahat edecek. Demek istediğim ve herkesin sorduğu aynı anda prinf'lerin yazması dediğim olay bu:
Tane tane anlattım, bence tekrar oku. Boşluk bırak bak bakalım ne oluyor...
 
Hocam son olarak bu kodda scanf'ler için sadece ''%s'' yerine ''%[^\n]'' kullanınca tüm printf'lerin aynı anda yazdırma sebebi nedir ? Bunun sebebini de anlarsam içim rahat edecek. Demek istediğim ve herkesin sorduğu aynı anda prinf'lerin yazması dediğim olay bu:

Eki Görüntüle 1234330
O bir regex dostum. Girilen metni satır sonuna kadar alır. C dilinde yaygın bir deyimdir.


Ama C dilinde bir satırın '\n' dediğimiz yeni satır bitirecine (new line terminator) kadar süreceğine derleyiciyi yapan kişiler karar verir, yani belki GNU C'de ya da MSVC'de yoktur ama diğer derleyicilerde bu kod sıkıntısız çalışır.

C dilinde kullanıcı girdisi almak ciddi bir eziyet. Örneğin şu an yaptığın sistem bir buffer'a sadık kalacak şekilde çalışmak zorunda, öteki türlü "buffer overflow" dediğimiz sıkıntı oluşur. Bu yüzden ben döngü içerisinde fgets() ile stdin'den bilgi almayı daha doğru buluyorum.

C:
#include <stdio.h>
#include <stdlib.h>

int main(){
    char buf[100];
    while(1){
        if(!fgets(buf,sizeof(buf),stdin)){ //End of file -> dosya sonu
            break;
        }
        printf("%s",buf);
    }
    return 0;
}
 
O bir regex dostum. Girilen metni satır sonuna kadar alır. C dilinde yaygın bir deyimdir.


Ama C dilinde bir satırın '\n' dediğimiz yeni satır bitirecine (new line terminator) kadar süreceğine derleyiciyi yapan kişiler karar verir, yani belki GNU C'de ya da MSVC'de yoktur ama diğer derleyicilerde bu kod sıkıntısız çalışır.

C dilinde kullanıcı girdisi almak ciddi bir eziyet. Örneğin şu an yaptığın sistem bir buffer'a sadık kalacak şekilde çalışmak zorunda, öteki türlü "buffer overflow" dediğimiz sıkıntı oluşur. Bu yüzden ben döngü içerisinde fgets() ile stdin'den bilgi almayı daha doğru buluyorum.

C:
#include <stdio.h>
#include <stdlib.h>

int main(){
    char buf[100];
    while(1){
        if(!fgets(buf,sizeof(buf),stdin)){ //End of file -> dosya sonu
            break;
        }
        printf("%s",buf);
    }
    return 0;
}
Sağ olun ancak buradaki terimleri öğrendikten sonra tekrar göz atacağım.
 
Hocam son olarak bu kodda scanf'ler için sadece ''%s'' yerine ''%[^\n]'' kullanınca tüm printf'lerin aynı anda yazdırma sebebi nedir ? Bunun sebebini de anlarsam içim rahat edecek. Demek istediğim ve herkesin sorduğu aynı anda prinf'lerin yazması dediğim olay bu:
Alt satıra almak için "\n" kullanabilirsiniz.
 

Yeni konular

Geri
Yukarı