我收到的错误是:
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=]
我可能缺乏关于C ++语言的非常基本的知识部分而且我为再次问这个新手问题而道歉。如果您能提供反馈或指出我的代码中的其他缺陷,我将不胜感激。 我的C ++代码有什么问题?
#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;
}
答案 0 :(得分:2)
正如错误消息所示%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();