```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
char l[2], s[105];
int n, b, c;
char a;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> l;
if (l[0] >= 'a' && l[0] <= 'z') {
a = l[0];
cin >> b >> c;
} else {
sscanf(l, "%d", &b);
cin >> c;
}
memset(s, 0, sizeof(s));
int len = 0; // 保存字符串长度
if (a == 'a') {
len = sprintf(s, "%d+%d=%d", b, c, b + c);
} else if (a == 'b') {
len = sprintf(s, "%d-%d=%d", b, c, b - c);
} else if (a == 'c') {
len = sprintf(s, "%d*%d=%d", b, c, b * c);
}
cout << s << endl << len << endl;
}
return 0;
}
```
使用len保存长度,而不是使用strlen函数。strlen()只能计算以 null 终止的字符串的长度。
by 3wykx @ 2023-07-22 13:29:32
@[3wykx](/user/499140) 谢谢大佬 AC了
by chenmumin @ 2023-07-22 13:42:23
@[3wykx](/user/499140) 还有什么是null 终止的字符串的长度啊?
by chenmumin @ 2023-07-22 13:43:57
strlen 函数通过逐个检查字符串中的字符,直到遇到字符串的结尾标记 ('\0' 或者 NULL) 来确定字符串的长度。也就是必须遇到终止标记。你可以把NULL理解为空,严格来说是指向0的指针。如果想要使用strlen函数并保证安全的话,可以在末尾添加一个“\0”(如果没有),而不是添加NULL
by 3wykx @ 2023-07-22 15:17:07