2014-09-27 106 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; 
}