2014-09-27 69 views
-10

我所做的只是将这些字符串分配给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; 
} 
+7

不看书? – 2014-09-27 12:30:11

+0

你需要先学习'C'的基本知识。从这里良好的开始http://www.tutorialspoint.com/cprogramming/index.htm – 2014-09-27 12:32:26

+0

我的问题是,如何给字符串赋值,假设m给出输入为星期一,ab为7,结果将为0,但它不是geting – 2014-09-27 12:32:39

回答

5

我在做什么错?

答案是 - everything everything。每一行绝对每行都有错误或错字。

teusday应该tuesday

void main应该int main

enum变量声明需求一行的末尾分号

#include <stdio.h>缺少scanf

无法写入字符串枚举值。

ab未声明

n未声明。

print函数不存在,printf呢。

PS。在编写代码之前先尝试学习更多的理论。阅读一本好的C书 - 其中有很多

+0

谢谢你的回答,但我想知道代码,我也知道我认为在这里代码部分是愚蠢的东西是主要的但都集中在正常的错误... – 2014-09-27 12:46:55

+0

有没有办法做你想做的。使用普通的C字符串而不是枚举值 – 2014-09-27 12:47:43

+0

@chandubunnyfan列出的所有sasha.sochka错误都是“愚蠢的”。它们都是真正的错误,如果你甚至不想编写一个没有“愚蠢”错误的程序,你不应该得到帮助。 – fuz 2014-09-27 12:51:12

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; 
}