在C语言中使用字符常量

在C语言中使用字符常量,c,C,我正试图写一个程序,但在给变量赋值时遇到了一些问题。给我带来问题的部分是这段简单的代码: char x; if (friction > fN || friction < -fN) { x = 'false'; printf("\%s\n", x); } else { x = 'true'; printf("\n%s\n", x); } fprintf(Output,"%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf, %s\n"

我正试图写一个程序,但在给变量赋值时遇到了一些问题。给我带来问题的部分是这段简单的代码:

char x;
if (friction > fN || friction < -fN) {
    x = 'false';
    printf("\%s\n", x);
}
else {
    x = 'true';
    printf("\n%s\n", x);
}

fprintf(Output,"%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf, %s\n", theta, theta_rad, V, Fa, Uc, Vc, moment, fN, friction, x);
注意:
fprintf
中的其余参数打印得很好,问题只在于如何声明字符。最后,它根本不打印x“值”


提前谢谢你,谢谢你的帮助

char
仅存储一个字符。您需要声明一个字符数组(通常称为字符串),并使用
string.h
函数(即)复制和存储字符串

还要注意,字符串用双引号括起来,而不是单引号

#包括
和标题:

char x[255];
if (friction > fN || friction < -fN) {
    strcpy(x, "false");
    printf("\%s\n", x);
}
else {
    strcpy(x, "true");
    printf("\n%s\n", x);
}

fprintf(Output,"%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf, %s\n", theta, theta_rad, V, Fa, Uc, Vc, moment, fN, friction, x);
charx[255];
如果(摩擦力>fN | |摩擦力<-fN){
strcpy(x,“假”);
printf(“\%s\n”,x);
}
否则{
strcpy(x,“真实”);
printf(“\n%s\n”,x);
}
fprintf(输出,“%lf、%lf、%lf、%lf、%lf、%lf、%lf、%lf、%s\n”、θ、θ、弧度、V、Fa、Uc、Vc、力矩、fN、摩擦力、x);

当然,如果以后不使用
x
变量,您可能只想直接打印
“true”
“false”
字符串。

char
只存储一个字符。您需要声明一个字符数组(通常称为字符串),并使用
string.h
函数(即)复制和存储字符串

还要注意,字符串用双引号括起来,而不是单引号

#包括
和标题:

char x[255];
if (friction > fN || friction < -fN) {
    strcpy(x, "false");
    printf("\%s\n", x);
}
else {
    strcpy(x, "true");
    printf("\n%s\n", x);
}

fprintf(Output,"%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf, %s\n", theta, theta_rad, V, Fa, Uc, Vc, moment, fN, friction, x);
charx[255];
如果(摩擦力>fN | |摩擦力<-fN){
strcpy(x,“假”);
printf(“\%s\n”,x);
}
否则{
strcpy(x,“真实”);
printf(“\n%s\n”,x);
}
fprintf(输出,“%lf、%lf、%lf、%lf、%lf、%lf、%lf、%lf、%s\n”、θ、θ、弧度、V、Fa、Uc、Vc、力矩、fN、摩擦力、x);

当然,如果以后不使用
x
变量,您可能只想直接打印
“true”
“false”
字符串。

字符仅用于单个字符。您将需要对多个字符使用字符串

char * x = "false"; /*double quotes*/
printf("%s\n", x);

也就是说,如果只想表示true和false,最好分别使用整数
1
0
,因为这样可以将它们传递给if语句和其他条件

字符仅用于单个字符。您将需要对多个字符使用字符串

char * x = "false"; /*double quotes*/
printf("%s\n", x);

也就是说,如果只想表示true和false,最好分别使用整数
1
0
,因为这样可以将它们传递给if语句和其他条件

char
类型用于存储单个字符,但您试图定义多个字符的常量。如果需要一个字符序列,则使用引号(
)和
常量字符*

字符类型用于存储单个字符,但您试图定义多个字符的常量。如果需要一个字符序列,则使用引号(
)和
常量字符*

正如其他用户所指出的,char只能存储一个字符(如名称所示)。您尝试执行的另一种代码是:

    if (friction > fN || friction < -fN) {
        printf("false\n");
        }
    else {
        printf("true\n");
        }
if(摩擦力>fN |摩擦力<-fN){
printf(“假”);
}
否则{
printf(“true\n”);
}

正如其他用户所指出的,char只能存储一个字符(如名称所示)。您尝试执行的另一种代码是:

    if (friction > fN || friction < -fN) {
        printf("false\n");
        }
    else {
        printf("true\n");
        }
if(摩擦力>fN |摩擦力<-fN){
printf(“假”);
}
否则{
printf(“true\n”);
}

您的代码存在的问题是您将
x
声明为
char
char
是一种只能存储1个字符的类型。因此,如果您想存储超过1个字符,则需要使用所谓的
字符串。字符串可以声明为字符向量。例如,
charstr[20]
声明一个包含20个字符的字符串。但是,在您的情况下,最好使用指向常量char的指针(请注意编译器发出的第三个警告),该常量char由char*str=“string content”定义。请注意,双引号(
)的使用是单引号(
)的替代。它们之间的区别在于,单引号用于初始化
字符,例如char
c='a'
。声明字符串时,必须使用双引号,例如
char*str=“hello world!”!“
,或
char str[]=”你好,世界!“
。当您用双引号声明字符串时,会在字符串末尾添加一个称为字符串终止符的特殊字符(
'\0'
,请注意,这是一个单字符,因此您在其周围使用单引号)。 以下是您的代码示例:

char* x; // x is declared as a constant string
if (friction > fN || friction < -fN) {
    x = "false";
    printf("\%s\n", x);
}
else {
    x = "true";
    printf("\n%s\n", x);
}
char*x;//x被声明为常量字符串
如果(摩擦力>fN | |摩擦力<-fN){
x=“假”;
printf(“\%s\n”,x);
}
否则{
x=“真”;
printf(“\n%s\n”,x);
}

您的代码存在的问题是,您将
x
声明为
char
char
是一种只能存储1个字符的类型。因此,如果您想存储多个字符,则需要使用称为
字符串的字符串。字符串可以声明为字符向量。例如,
char str[20]
声明一个由20个字符组成的字符串。但是,在您的情况下,最好使用一个指向常量char的指针(注意编译器发出的第三个警告),该常量char由char*str=“string content”定义。请注意使用双引号(
)代替单引号(
)。它们之间的区别在于,单个引号用于初始化
char
,例如char
c='a'
。例如,在声明字符串时,必须使用双引号