C++ 格式';%c';应为类型为';char';
我收到的错误是:C++ 格式';%c';应为类型为';char';,c++,C++,我收到的错误是: program3.cpp:13:21: warning: format ‘%c’ expects argument of type ‘char*’, but argument 2 has type ‘std::string* {aka std::basic_string<char>*}’ [-Wformat=] program3.cpp:13:21:警告:格式“%c”要求参数类型为“char*”,但参数2的类型为“std::string*{aka std::bas
program3.cpp:13:21: warning: format ‘%c’ expects argument of type ‘char*’, but argument 2 has type ‘std::string* {aka std::basic_string<char>*}’ [-Wformat=]
program3.cpp:13:21:警告:格式“%c”要求参数类型为“char*”,但参数2的类型为“std::string*{aka std::basic_string*}”[-Wformat=]
我可能缺少关于C++语言的一个非常基础的知识,我为再次问这个问题而道歉。如果您能提供反馈或指出我代码中的其他缺陷,我将不胜感激。
我的C++代码有什么错误?< /P>
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
int harga=20000;
int diskon;
char pelanggan;
string jenisp;
printf("Apakah Pelanggan : [Y/N]");
scanf("%c",&pelanggan);
if(pelanggan=='Y'){
printf("Apa Jenis Pelanggan [Emas,Perak,Perunggu]:");
scanf("%c",&jenisp);
if(jenisp=="Emas"){
diskon=harga-(0.5*harga);
printf("Harga untuk pelanggan kartu Emas adalah : %d",diskon);
}
else if(jenisp=="Perak"){
diskon=harga-(0.25*harga);
printf("Harga untuk pelanggan kartu Perak adalah : %d",diskon);
}
else if(jenisp=="Perunggu"){
diskon=harga-(0.1*harga);
printf("Harga untuk pelanggan kartu Perunggu adalah : %d",diskon);
}
}
else{
printf("Harga untuk bukan pelanggan adalah : %d",harga);
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
国际价格=20000;
int diskon;
查尔·佩朗根;
字符串jenisp;
printf(“Apakah Pelanggan:[是/否]”);
scanf(“%c”和pelanggan);
如果(pelanggan=='Y'){
printf(“Apa Jenis Pelanggan[Emas,霹雳州,佩鲁古]:”;
scanf(“%c”&jenisp);
如果(jenisp==“Emas”){
diskon=harga-(0.5*harga);
printf(“向穷人收费:%d”,diskon);
}
否则如果(jenisp==“霹雳州”){
diskon=harga-(0.25*harga);
printf(“向穷人收费:%d”,diskon);
}
否则如果(jenisp==“Perunggu”){
diskon=harga-(0.1*harga);
printf(“价格为%d”,diskon);
}
}
否则{
printf(“价格为%d”,哈尔加);
}
返回0;
}
正如错误消息所说,%c
在scanf
参数中,除了char*
之外,将在那里存储一个字符。它不接受std::string*
使用此功能可能有助于学习
std::string read_string() {
char buffer[10000]; // allocate enough memory
if(scanf("%9999s", buffer) == 1) {
// successfuly read something
return buffer;
} else {
return "";
}
}
要使用它,请将它粘贴到
int main()
之前,并替换scanf(“%c”,&jenisp)代码>带有jenisp=read_string()代码>不能用C函数读入std::string
。为什么使用C++类型而不是C函数?选择一种语言(然后用该语言标记此问题)。@LightnessRacesinOrbit:youcan:std:strings(101,”;scanf(“%100s”、&s[0]);s、 调整大小(100)
@alk:只满足“读入std::string
”这一相当弱的定义:P@R_Kapp非常感谢。编辑。