在我的 strpbrk 函数中返回 nullptr 时出现分段错误
Segmentation fault when returning a nullptr in my strpbrk function
我需要帮助 return在我的 strpbrk 实现中设置 nullptr。有没有办法在不触发分段错误的情况下 return nullptr?
这是我的代码:
#include <iostream>
const char *STRPBRK(const char *haystack, const char *char_list) {
// TODO
for(unsigned int i = 0; i < haystack[i] != '[=10=]';i++){
for(unsigned int j = 0; j < char_list[j] != '[=10=]';j++){
if(haystack[i] == char_list[j]){
return &haystack[i];
}
}
}
return nullptr;
}
int main() {
char data[] = "HelloWorld";
std::cout<<"output: "<<STRPBRK(data,"ello"); //output: elloWorld
std::cout<<"output: "<<STRPBRK(data,"pp"); //output: STRPBRK
}
当 return 没有找到这样的字符时输入 nullptr 时,输出应该如下所示
输出:STRPBRK
检查调用者中的 return 值并避免将 nullptr
传递给 std::cout
。
#include <iostream>
const char *STRPBRK(const char *haystack, const char *char_list) {
// TODO
for(unsigned int i = 0; i < haystack[i] != '[=10=]';i++){
for(unsigned int j = 0; j < char_list[j] != '[=10=]';j++){
if(haystack[i] == char_list[j]){
return &haystack[i];
}
}
}
return nullptr;
}
void work(const char* data, const char* query) {
const char* res = STRPBRK(data,query);
std::cout << "output: " << (res != nullptr ? res : "STRPBRK");
}
int main() {
char data[] = "HelloWorld";
work(data,"ello"); //output: elloWorld
work(data,"pp"); //output: STRPBRK
}
我需要帮助 return在我的 strpbrk 实现中设置 nullptr。有没有办法在不触发分段错误的情况下 return nullptr? 这是我的代码:
#include <iostream>
const char *STRPBRK(const char *haystack, const char *char_list) {
// TODO
for(unsigned int i = 0; i < haystack[i] != '[=10=]';i++){
for(unsigned int j = 0; j < char_list[j] != '[=10=]';j++){
if(haystack[i] == char_list[j]){
return &haystack[i];
}
}
}
return nullptr;
}
int main() {
char data[] = "HelloWorld";
std::cout<<"output: "<<STRPBRK(data,"ello"); //output: elloWorld
std::cout<<"output: "<<STRPBRK(data,"pp"); //output: STRPBRK
}
当 return 没有找到这样的字符时输入 nullptr 时,输出应该如下所示
输出:STRPBRK
检查调用者中的 return 值并避免将 nullptr
传递给 std::cout
。
#include <iostream>
const char *STRPBRK(const char *haystack, const char *char_list) {
// TODO
for(unsigned int i = 0; i < haystack[i] != '[=10=]';i++){
for(unsigned int j = 0; j < char_list[j] != '[=10=]';j++){
if(haystack[i] == char_list[j]){
return &haystack[i];
}
}
}
return nullptr;
}
void work(const char* data, const char* query) {
const char* res = STRPBRK(data,query);
std::cout << "output: " << (res != nullptr ? res : "STRPBRK");
}
int main() {
char data[] = "HelloWorld";
work(data,"ello"); //output: elloWorld
work(data,"pp"); //output: STRPBRK
}