【问题标题】:How to assign a value to strings? [closed]如何为字符串赋值? [关闭]
【发布时间】:2014-11-22 08:34:26
【问题描述】:

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

【问题讨论】:

  • 不看书?
  • 你需要先了解C的基础知识。美好从这里开始tutorialspoint.com/cprogramming/index.htm
  • 我的问题是如何为字符串分配一个值,假设 m 输入为 monday 和 ab 为 7 结果将为 0 但它没有得到
  • enums 不是字符串,您所做的或多或少等同于const int monday=0,teusday=1,wednesday=2;。你没有声明ab,也没有声明n,标准库中也没有print这样的函数。
  • 为什么不重新思考和重新阅读

标签: c enums


【解决方案1】:

我做错了什么?

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

teusday 应该是tuesday

void main 应该是int main

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

#include &lt;stdio.h&gt; 缺少 scanf

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

ab 未声明

n 未声明。

print 函数不存在,printf 存在。

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

【讨论】:

  • 感谢您的回答,但我想知道代码,而且我也知道我认为代码部分很愚蠢,但都集中在正常错误上...
  • 没有办法做你想做的事。使用普通的 C 字符串而不是枚举值
  • @chandubunnyfan 列出的所有错误 sasha.sochka 都不是“愚蠢的”。它们都是真正的错误,如果你甚至不想努力编写一个没有“愚蠢”错误的程序,那么你不值得得到帮助。
  • 字符日期[15]="星期一";通过使用它将获取字符串名称而不是值那是 y m 问如何?和 FUZxxl m 没有抱怨 sasha.sochka 发布的内容
  • 一个错误就是一个错误——它并不傻
【解决方案2】:
#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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 2014-10-08
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多