我所做的就是将这些字符串分配给enumdata类型值,但它不会起作用。我已将字符串分配给C中的枚举。我做错了什么?
#include <stdio.h>
enum day{monday,tuesday,wednesday};
int main()
{
enum day pres;
int n,ab;
scanf("%s",&pres);
scanf("%d",&ab);
n=((ab%7)+pres);
print("%d",n);
return 0;
}
答案 0 :(得分:5)
我做错了什么?
答案是 - 一切。每个,绝对每一行都有错误或拼写错误。
teusday
应为tuesday
void main
应为int main
enum
变量声明在行尾
#include <stdio.h>
缺少 scanf
您根本无法将字符串写入枚举值。
ab
未声明
n
未声明。
print
功能不存在,printf
确实存在。
PS。在编写代码之前先尝试学习更多理论。阅读一本好的C书 - 其中有很多
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
enum DayOfWeek {
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, ErrDOW=-1
};
static const char *nameOfDOW[] = {
"sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"
};
enum DayOfWeek strToDOW(const char *str);
int main(void){
char in_str[16];
enum DayOfWeek aDOW;
int wday, addDay, n;
printf("Please enter the name day of the week : ");
scanf(" %15s", in_str);
if(ErrDOW==(aDOW = strToDOW(in_str))){
printf("invalid name\n");
return EXIT_FAILURE;
}
printf("Please enter the number of days to add : ");
scanf("%d", &addDay);
n= (aDOW + addDay) % 7;
printf("%d\n", n);
printf("%c%s\n", toupper(nameOfDOW[n][0]), nameOfDOW[n]+1);
return EXIT_SUCCESS;
}
enum DayOfWeek strToDOW(const char *str){
char *s = strlwr(strdup(str));//note : strdup and strlwr are not standard.
int i, len = strlen(s);
for(i=Sunday; i<= Saturday; ++i){
if(3 == len){
if(strncmp(nameOfDOW[i], s, 3)==0)
break;
} else {
if(strcmp(nameOfDOW[i], s)==0)
break;
}
}
free(s);
if(i > Saturday)
return ErrDOW;
else
return i;
}