我使用emacs在C中使用此代码,其中我已经收到了输入,如果输入使用以下任何字符,我想用其余代码替换它们。但我收到一个错误。我做错了什么?
void askQuestion(char text[])
{
for (char * p = text; *p; p++)
{
switch (*p)
{
case '<':
*p = "";
break;
case '>':
*p = "";
break;
case '#':
*p = "\n";
break;
case '{':
*p = " \"";
break;
case '}':
*p = "\" ";
break;
case '[':
*p = " \'";
break;
case ']':
*p = "\' ";
break;
}
cout << *p;
}
}
并且它给了我错误
&#34;来自&#39; const char *&#39;的无效转换到&#39; char&#39;
如何修改此代码以更改指针?我只是希望能够用替换值打印出*p
。我该怎么做呢?或者你会建议我做些不同的工作?或者换句话说,我怎么能写这个程序来修改输入。
答案 0 :(得分:5)
这个答案考虑
我在
中有这段代码C
p
此处为char *
。
由于您一次只接受一个char
(switch
个案例),您需要使用char
值来填充*p
,而不是< em> string ,如
*p = '\n';
等等。
请记住,""
表示字符串文字(通常为char *
类型),而''
表示char
字面值(不要感到惊讶,它的类型为int
)。
也就是说,在C代码中,您无法使用cout
,如评论中所述。