60分代码,求助大佬错的都是WA了

P1957 口算练习题

```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


|