char *st1="12345", *st2="abcde""; strcat(st1,st2)
时间: 2023-04-12 13:00:31 浏览: 88
答案:这是一个字符串拼接的问题,正确的代码应该是:
char st1[11] = "12345";
char st2[6] = "abcde";
strcat(st1, st2);
注意,这里需要给 st1 和 st2 分别分配足够的空间,否则会出现内存错误。
相关问题
String operator+(const String &st1, const String &st2) { int length = st1.len + st2.len; char *temp = new char[length + 1]; strcpy(temp, st1.str); strcat(temp, st2.str); String new_str(temp); delete[] temp; return new_str; }语句分析
这是一个字符串类 String 的加法重载运算符函数,可以实现两个字符串对象的连接。具体分析如下:
1. `String operator+(const String &st1, const String &st2)`:函数名为 `operator+`,表示重载加号运算符,参数为两个 `const` 类型的引用,分别为两个字符串对象 `st1` 和 `st2`。
2. `int length = st1.len + st2.len`:计算两个字符串长度之和,赋值给 `length` 变量。
3. `char *temp = new char[length + 1]`:在堆上分配 `length + 1` 个字符空间,赋值给 `temp` 指针变量,用于存放连接后的字符串。
4. `strcpy(temp, st1.str)`:将 `st1` 的字符串内容复制到 `temp` 中。
5. `strcat(temp, st2.str)`:将 `st2` 的字符串内容追加到 `temp` 中。
6. `String new_str(temp)`:用 `temp` 中的字符串内容初始化一个新的 `String` 对象 `new_str`。
7. `delete[] temp`:释放 `temp` 所占用的内存空间。
8. `return new_str`:返回新的字符串对象 `new_str`。
string st=@"50*30" string st1=@"50*30=2" Regex.IsMatch(st, st1);
这段代码有问题,应该是先编译正则表达式,再用正则表达式去匹配字符串。可以尝试以下代码:
```
string st=@"50*30";
string st1=@"50\*30=\d+";
Regex regex = new Regex(st1);
bool isMatch = regex.IsMatch(st);
Console.WriteLine(isMatch);
```
其中,`\*` 用于匹配 `*` 符号,因为 `*` 是正则表达式中的特殊字符。`\d+` 用于匹配一个或多个数字。运行结果为 `False`,因为 `st` 中没有等于号。如果将 `st` 修改为 `"50*30=2"`,则运行结果为 `True`。
阅读全文