我正在尝试编写一个程序,而且我在为变量分配某个单词时遇到了一些麻烦。给我带来问题的部分是这段简单的代码:
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);
基本上我只想输出x&#34;值&#34;是,并将其包含在我的文件中。
我收到以下两条警告,全部与第x = 'false'
行和x = 'true'
行有关,以及我如何宣布char x
。
warning: character constant too long for its type
warning: overflow in implicit constant conversion
warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
注意:fprintf
中的其余参数打印正常,问题仅在于我如何声明char。最后,它不打印x&#39;值&#39;在所有......
提前感谢您,我感谢您的帮助!
答案 0 :(得分:2)
char
只存储一个字符。您需要声明一个字符数组(通常称为字符串)并使用string.h
函数(即strcpy
)来复制和存储字符串。
另请注意,字符串用双引号括起来,而不是单引号。
将#include <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);
当然,如果您以后没有使用"true"
变量,可能只想直接打印"false"
和x
字符串。
答案 1 :(得分:2)
您的代码存在的问题是您将x
声明为char
。 char
是一种只能存储1个字符的类型。因此,如果要存储多个字符,则需要使用所谓的string
。字符串可以声明为char矢量。例如,char str[20]
声明一个包含20个字符的字符串。但是,在您的情况下,最好使用(请注意从编译器获得的第三个警告)指向常量char的指针,使用char * str =“string content”定义。请注意使用双引号("
)而不是单引号('
)。它们之间的区别在于单引号用于初始化char
,示例char c='a'
。声明字符串时,必须使用双引号,例如char *str="hello world!"
或char str[]="hello world!"
。当您使用双引号声明一个字符串时,会在字符串的末尾添加一个特殊字符,称为字符串终结符('\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);
}
答案 2 :(得分:1)
字符仅适用于单个字符。您需要为多个字符使用字符串。
char * x = "false"; /*double quotes*/
printf("%s\n", x);
也就是说,如果只想表示真假,那么分别使用整数1
和0
会更好,因为这样你可以将它们传递给if语句和其他条件。
答案 3 :(得分:1)
正如其他用户指出的那样,char只能存储一个字符(如名称所示)。您尝试执行的操作的替代代码是:
if (friction > fN || friction < -fN) {
printf("false\n");
}
else {
printf("true\n");
}
答案 4 :(得分:0)
char
类型用于存储单个字符,但您尝试定义具有多个字符的常量。如果您需要一系列字符,请使用引号("
)和const char*
。