Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何为字符串赋值?_C_Enums - Fatal编程技术网

C 如何为字符串赋值?

C 如何为字符串赋值?,c,enums,C,Enums,我所做的只是将这些字符串赋给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("%

我所做的只是将这些字符串赋给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;  
}
#包括
枚举日{星期一、星期二、星期三};
int main()
{ 
枚举日压力;
int n,ab;
scanf(“%s”和“pres”);
scanf(“%d”和&ab);
n=((ab%7)+pres);
打印(“%d”,n);
返回0;
}
我做错了什么

#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;  
}
答案是——一切。每一行,绝对每一行都有一个错误或一个打字错误

teusday
应该是
teusday

void main
应为
int main

enum
变量声明在行尾需要分号

scanf

您根本无法将字符串写入枚举值

ab
未声明

n
未声明

print
函数不存在,
printf
存在

在编写代码之前,先尝试学习更多的理论知识。读一本好的C语言书,其中有很多
#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;
}
#包括 #包括 #包括 enum DayOfWeek{ 星期日、星期一、星期二、星期三、星期四、星期五、星期六,ErrDOW=-1 }; 静态常量字符*nameOfDOW[]={ “星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六” }; enum DayOfWeek strtow(const char*str); int main(void){ char in_str[16]; enum DayOfWeek aDOW; int wday,addDay,n; printf(“请输入一周中的日期:”); scanf(“%15s”,in_str); 如果(ErrDOW==(aDOW=strToDOW(in_str))){ printf(“无效名称\n”); 返回退出失败; } printf(“请输入要添加的天数:”); scanf(“%d”、&addDay); n=(aDOW+addDay)%7; printf(“%d\n”,n); printf(“%c%s\n”,toupper(nameOfDOW[n][0]),nameOfDOW[n]+1); 返回退出成功; } enum DayOfWeek strTow(常量字符*str){ char*s=strlwr(strdup(str));//注意:strdup和strlwr不是标准的。 int i,len=strlen(s); (i=星期日;i=星期六) 回报率; 其他的 返回i; }
没有读这本书吗?你需要先学习
C
的基本知识。从这里开始,我的问题是,如何为字符串赋值,假设m输入为monday,ab为7,结果将为0,但它不是geting
enum
s不是字符串,您所做的多少相当于
const int monday=0,teusday=1,星期三=2。您既没有声明
ab
也没有声明
n
,标准库中没有这样的
print
功能。为什么不重新思考并重新阅读呢?谢谢你的回答,但我想知道代码,我也知道,我认为代码部分是主要的,但都集中在正常错误上……没有办法做你想做的事情。使用普通C字符串而不是枚举-values@chandubunnyfansasha.sochka列出的错误都不是“愚蠢的”。它们都是真正的错误,如果你甚至不想写一个没有“愚蠢”错误的程序,你就不值得帮助;通过使用它,将接受字符串名称,但不接受值,这是我在问如何使用的??我并不是在抱怨萨沙发布的错误。索奇卡安的错误是一个错误——这并不愚蠢