Klavyeden girilen harf sayısına göre isim yazdırma

Nieagerams

Hectopat
Katılım
27 Mayıs 2019
Mesajlar
4.911
Çözümler
20
Daha fazla  
Cinsiyet
Erkek
C'de bir program yapmaya çalıştım. Kullanıcıdan girilen harf sayısına göre bir string dizisi oluşturulacak ve tek tek harfleri basılacak ama nerelerde hata yaptığımı anlamadım. @Vavien.
C:
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
   
    int number;
    printf("How many letters does your name has? ");
    scanf("%d",&number);
   
    int i=number+1;
    int j=0;
    char word[i];
   
   
    while(j<number)
    {
        printf("Enter a letter: ");
        scanf("%c",word[j]);
        j++;
    }
    printf("%s",word);
       
    return 0;
}
 
20. satırda adres vermelisiniz.
14. satır, static array'lerin boyutu compile time'da belli olmalıdır. Bu yüzden bir buffer yapmalı veya dinamik olarak almalısın.
scanf white space'e kadar alır ama onu almaz. Bu yüzden önceki girişten kalan \n'i silmek için o şekilde yaptım.
Ben olsam for döngüsü kullanırdım. Hem döngü değişkenini içeride tanımlayabiliyorsun bu sayede. Büyük scope'ta i ve j değişkeninin olmasını istemem ben.
Değişkenlerini her zaman ilklendir.

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

int main(int argc, char *argv[]) {
    char word[100] = { 0 };
    int number = 0;
    int j = 0;
    
    printf("How many letters does your name has? ");
    scanf("%d", &number);
  
    while(j < number) {
        printf("Enter a letter: ");
        scanf("\n%c", &word[j]);
        ++j;
    }
    
    printf("%s", word);
    
    return 0;
}
 
scanf white space görene kadar (boşluk, tab, enter vb.) okur. Ama onu okumaz. Ama okuma buffer'ında o kalır. Bu durumda \n kalmış oluyor. Sen de okurken ona \n oku dersen onu da okumuş olur, sonrasında sapıtmaz. İstersen kaldırıp deneyebilirsin.
 
scanf white space görene kadar (boşluk, tab, enter vb.) okur. Ama onu okumaz. Ama okuma buffer'ında o kalır. Bu durumda \n kalmış oluyor. Sen de okurken ona \n oku dersen onu da okumuş olur, sonrasında sapıtmaz. İstersen kaldırıp deneyebilirsin.
Teşekkürler, bu kısma çalışsam iyi olacak.
 

Yeni konular

Geri
Yukarı