Yazdığınız kod çalışmış olmalı, ancak sizin tasarladığınız şekilde değil, aslında enum derlendikten sonra tamsayı olarak tehdit edilmiş ve 'unuzun nesne dosyasında hiçbir iz kalmayacaktır "jan, feb, mar, apr, may programınız sadece scanf ile komut satırından işaretsiz sayı ayrıştırır ve printf sonra aynı numarayı verir bu nedenle, Haziran, Temmuz, Ağustos, Eylül, Kasım okt, Aralık", .. muhtemelen bu
#include <stdio.h>
#include <string.h>
char* months[] = {"jan","feb","mar","apr","may","jun","jul","aug","sep","okt","nov","dec"};
int main()
{
printf("\n");
printf("Get Number By Month (type first 3 letters): ");
char str[3];
scanf("%s",str);
int i;
for(i=0; i<12; i++)
{
if(!strcmp(str,months[i]))
{
printf("Your month number is: %d",i+1);
}
}
return 0;
}
istedi
, enumları kullanmaz, ancak mantıken kaynak verimliliğini bozmadan kaynak okunabilirliğini korumak için kullanıldığından ve bu nedenle dizgiler değil tamsayılar olarak tehdit edildiğinden, bu yüzden mantık ayrıştırması yapmak istediğinizde, kullanmak zorunda olduğunuz için mantıklıdır. dizeleri çünkü "jan", "feb" vb. ile kullanıcı girdisini karşılaştırmak zorundasınız.
Neden main() no type ile? –
Biçim belirleyiciniz gayet iyi. "Stringy" adresini "scanf" içine iletmeniz gerekir. Yani, scanf ("% u", & stringy) " – simonc
AAAAAH, simonc teşekkürler, sadece ve işareti unuttum. Teşekkürler. – Mathias