Mã bạn đã viết phải hoạt động, nhưng không theo cách bạn dự định, trong thực tế enum bị đe dọa dưới dạng số nguyên sau khi biên dịch và vẫn không có dấu vết trong tệp đối tượng của "jan, feb, mar, apr, , jun, jul, aug, sep, okt, nov, dec ", vì lý do này chương trình của bạn chỉ cần phân tích một số unsigned từ dòng lệnh với scanf và trả về cùng một số sau khi printf .. Bạn có thể muốn điều này
#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;
}
không sử dụng enums, nhưng điều này là hợp lý vì enums được sử dụng để bảo toàn khả năng đọc nguồn mà không làm giảm hiệu quả và vì lý do này bị đe dọa là số nguyên không phải chuỗi, vì vậy nếu bạn muốn phân tích chuỗi, bạn phải sử dụng chuỗi bởi vì bạn phải so sánh đầu vào của người dùng với "jan", "feb", v.v.
Tại sao chính() không có loại? –
Trình định dạng định dạng của bạn là tốt. Bạn cần chuyển địa chỉ 'stringy' vào' scanf'. tức là 'scanf ("% u ", & stringy)' – simonc
AAAAAH cảm ơn bạn simonc, tôi vừa quên ký hiệu và. Cảm ơn. – Mathias