如何在char类型中省略引号用法?

如何在char类型中省略引号用法?,c,function,quotations,C,Function,Quotations,我很难根据自己的需要调整功能。首先看一下这三个文件,注意我必须在main函数中调用f_纹理函数才能使其工作: 外部人员 #ifndef EXTERNS_H_ #define EXTERNS_H_ extern char t_about[100]; extern int friction; extern int f_texture(char* ,char*); #endif 功能性 #include <stdio.h> #include "externs.h" int mai

我很难根据自己的需要调整功能。首先看一下这三个文件,注意我必须在main函数中调用f_纹理函数才能使其工作:

外部人员

#ifndef EXTERNS_H_
#define EXTERNS_H_

extern char t_about[100];
extern int friction;

extern int f_texture(char* ,char*);

#endif
功能性

#include <stdio.h>
#include "externs.h"

int main()
{
    f_texture("rough","friction");
    printf("Friction: %d\n", friction);
    f_texture("rough","t_about");
    return 0;
}
#包括
#包括“externs.h”
int main()
{
f_纹理(“粗糙”、“摩擦”);
printf(“摩擦力:%d\n”,摩擦力);
f_纹理(“粗糙”、“t_左右”);
返回0;
}
B.c.职能

#include "externs.h"
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <stdio.h>
char t_about[100];
int friction;

int f_texture(char* texture,char* what_is_needed)
{
    /*Checking if both values are present*/
    assert(what_is_needed);
    assert(texture);

    /*Static array in order to prevent it's disappearance*/
    memset(t_about, '\0', sizeof(t_about));

    /*Configuring variables for desired texture*/
    if (strcmp(texture, "smooth") == 0)
    {
        strcpy(t_about, "The surface is perfectly smooth, without any "
            "protuberances.\n");
        friction = 0;
    }
    else if (strcmp(texture, "rough") == 0)
    {
        strcpy(t_about, "Rough bumps can be feeled under my fingertips.\n");
        friction = 4;
    }
    /*In case of absent keyword of desired texture it will crash the program*/
    else
    {
        assert(!what_is_needed);
    }

    /*Returning desired value*/
    if (strcmp(what_is_needed, "t_about") == 0)
    {
        int i=0;
        while (t_about[i] != '\0')
            {
            printf("%c", t_about[i]);
            i++;
            }
    }
    else if (strcmp(what_is_needed, "friction") == 0)
    {
        return friction;
    }
    /*In case of absent keyword of desired value it will crash the program*/
    else
    {
        assert(!what_is_needed);
    }

    return 0;
}
#包括“externs.h”
#包括
#包括
#包括
#包括
chart_约[100];
内摩擦;
int f_纹理(char*纹理,char*需要什么)
{
/*检查两个值是否都存在*/
断言(需要什么);
断言(纹理);
/*静态数组以防止其消失*/
memset(t_-about,'\0',sizeof(t_-about));
/*为所需纹理配置变量*/
if(strcmp(纹理,“平滑”)==0)
{
strcpy(t_)关于“表面非常光滑,没有任何瑕疵”
“突起。\n”);
摩擦=0;
}
否则如果(strcmp(纹理,“粗糙”)==0)
{
strcpy(t_约,“我的指尖下可以感觉到粗糙的凸起物。\n”);
摩擦力=4;
}
/*如果缺少所需纹理的关键字,则会使程序崩溃*/
其他的
{
断言(!需要什么);
}
/*返回期望值*/
if(strcmp(需要什么,t关于什么)=0)
{
int i=0;
while(t_about[i]!='\0')
{
printf(“%c”,t_关于[i]);
i++;
}
}
否则如果(strcmp(需要什么,“摩擦力”)==0)
{
返回摩擦;
}
/*如果缺少所需值的关键字,它将使程序崩溃*/
其他的
{
断言(!需要什么);
}
返回0;
}
现在我的问题是:如何重写这段代码,使调用f_纹理函数成为可能,而不在里面使用引号?我的意思是不用f_纹理(“abcd”,“efgh”),只需键入f_纹理(abcd,efgh)。我注意到,在我写了这段代码之后,这种方式是必需的。 提前谢谢。

你可以这样做

char rough[]="rough";
char friction[]= "friction";
打电话

f_texture(rough, friction);
你可以这样做

char rough[]="rough";
char friction[]= "friction";
打电话

f_texture(rough, friction);
你可以这样做

char rough[]="rough";
char friction[]= "friction";
打电话

f_texture(rough, friction);
你可以这样做

char rough[]="rough";
char friction[]= "friction";
打电话

f_texture(rough, friction);


也可以使用一些宏:

#define ROUGH    "rough"
#define FRICTION "friction"
#define T_ABOUT  "t_about"

int main()
{
    f_texture(ROUGH, FRICTION);
    printf("Friction: %d\n", friction);
    f_texture(ROUGH, T_ABOUT);
    return 0;
}

也可以使用一些宏:

#define ROUGH    "rough"
#define FRICTION "friction"
#define T_ABOUT  "t_about"

int main()
{
    f_texture(ROUGH, FRICTION);
    printf("Friction: %d\n", friction);
    f_texture(ROUGH, T_ABOUT);
    return 0;
}

也可以使用一些宏:

#define ROUGH    "rough"
#define FRICTION "friction"
#define T_ABOUT  "t_about"

int main()
{
    f_texture(ROUGH, FRICTION);
    printf("Friction: %d\n", friction);
    f_texture(ROUGH, T_ABOUT);
    return 0;
}

也可以使用一些宏:

#define ROUGH    "rough"
#define FRICTION "friction"
#define T_ABOUT  "t_about"

int main()
{
    f_texture(ROUGH, FRICTION);
    printf("Friction: %d\n", friction);
    f_texture(ROUGH, T_ABOUT);
    return 0;
}

如果不想将字符串常量指定给变量或预处理器对象宏,另一个选项是使用预处理器函数宏,使用以下功能:

C预处理器将把它转换为

f_texture("rough","friction");

如果不想将字符串常量指定给变量或预处理器对象宏,另一个选项是使用预处理器函数宏,使用以下功能:

C预处理器将把它转换为

f_texture("rough","friction");

如果不想将字符串常量指定给变量或预处理器对象宏,另一个选项是使用预处理器函数宏,使用以下功能:

C预处理器将把它转换为

f_texture("rough","friction");

如果不想将字符串常量指定给变量或预处理器对象宏,另一个选项是使用预处理器函数宏,使用以下功能:

C预处理器将把它转换为

f_texture("rough","friction");


你只想叫它f_纹理()吗?你想做类似于
f_纹理(粗糙,摩擦)的事情吗?将所需字符串保存到某个变量,然后将该变量传递给f_texture()。您不能,或者唯一的方法是声明一个
char rough[6]=“rough”和a
char摩擦力[9]=“摩擦力”之前。或者使用一些宏。@sujin但就我所能想象的,我必须将每个可能的字符串值保存到另一个变量中,以使其按照您建议的方式工作,这在我看来是非常不切实际的。您只想将其称为f_纹理()吗?您想这样做吗
f_纹理(粗糙,摩擦)?将所需字符串保存到某个变量,然后将该变量传递给f_texture()。您不能,或者唯一的方法是声明一个
char rough[6]=“rough”和a
char摩擦力[9]=“摩擦力”之前。或者使用一些宏。@sujin但就我所能想象的,我必须将每个可能的字符串值保存到另一个变量中,以使其按照您建议的方式工作,这在我看来是非常不切实际的。您只想将其称为f_纹理()吗?您想这样做吗
f_纹理(粗糙,摩擦)?将所需字符串保存到某个变量,然后将该变量传递给f_texture()。您不能,或者唯一的方法是声明一个
char rough[6]=“rough”和a
char摩擦力[9]=“摩擦力”之前。或者使用一些宏。@sujin但就我所能想象的,我必须将每个可能的字符串值保存到另一个变量中,以使其按照您建议的方式工作,这在我看来是非常不切实际的。您只想将其称为f_纹理()吗?您想这样做吗
f_纹理(粗糙,摩擦)?将所需字符串保存到某个变量,然后将该变量传递给f_texture()。您不能,或者唯一的方法是声明一个
char rough[6]=“rough”和a
char摩擦力[9]=“摩擦力”之前。或者使用一些宏。@sujin但就我所能想象的,我必须将每个可能的字符串值保存到另一个变量中,以使其按照您建议的方式工作,这在我看来是非常不切实际的。这正是我想要的!这是如此简单,我觉得阿克沃德由于没有弄明白自己;顺便问一下,有没有一种方法可以更自动地定义它,而不是键入每个定义?例如,在这个函数中定义空间,而不是定义可以放在里面的元素。你可以使用一些技巧