use*_*070 0 c++ pointers char strcmp
这段代码在哪里做错了?我只需要char类型,请不要建议使用std::string.
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char *mystring="C:/windows";
char last_char;
last_char = mystring[strlen(mystring)-1];
cout<<"Input: " <<mystring<<endl;
if(strcmp(last_char,";")!=0)
{
strcat(mystring,";");
}
cout<<"Output: "<<mystring<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Compilation error time: 0 memory: 3340 signal:0
prog.cpp: In function ‘int main()’:
prog.cpp:7:17: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
char *mystring="C:/windows";
^
prog.cpp:11:25: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
if(strcmp(last_char,";")!=0)
^
In file included from prog.cpp:2:0:
/usr/include/string.h:140:12: error: initializing argument 1 of ‘int strcmp(const char*, const char*)’ [-fpermissive]
extern int strcmp (const char *__s1, const char *__s2)
Run Code Online (Sandbox Code Playgroud)
不要使用strcmp,它期望一个空终止字符序列.相反,使用直接比较:
if (last_char == ';') ...
Run Code Online (Sandbox Code Playgroud)
此外,您的代码在调用中调用未定义的行为strcat().my_string用字符串文字初始化,因此,不允许修改它,因为实现可以自由地将它放在只读内存中(通常会这样做).
您可以这样声明它:
char mystring[12] = "C:/windows"; // space for one more char
Run Code Online (Sandbox Code Playgroud)