【发布时间】:2020-11-25 06:16:34
【问题描述】:
好吧,我有这段代码,我正在尝试开始工作,但无论我继续得到什么,我都会得到 0xC0000005
int main()
{
if(stringContains("hello", "Hello world", FLAG_CASE_SENSITIVE))
{
printf("Works");
}
printf("%i", stringContains("hello", "Hello world", FLAG_CASE_SENSITIVE));
return 0;
}
#define FLAG_CASE_INSENSITIVE 0
#define FLAG_CASE_SENSITIVE 1
typedef enum { false, true } bool;
bool stringContains(char* needle, char* stack, int type);
char* toLower(char* s);
bool stringContains(char* needle, char* stack, int type)
{
if(type == FLAG_CASE_SENSITIVE)
{
return (strstr(toLower(stack), toLower(needle)) != 0) ? true : false;
}
return (strstr(stack, needle) != 0) ? true : false;
}
char* toLower(char* s) {
for(char *p=s; *p; p++) *p=tolower(*p);
return s;
}
我必须承认,我在 C 方面非常基础
【问题讨论】:
-
您将 字符串文字 传递给试图修改它们的函数。字符串文字是只读的。
-
OT:您需要在调用函数之前声明它们。也就是说,将前向声明移动到文件的顶部。
-
@kaylum 我做了,只是我合并了几个文件,这就是为什么它看起来像这样。
-
@EugeneSh。嗯,好吧,我该怎么办?我对此真的很陌生:(
-
要么不将字符串文字传递给这些函数,要么修改函数以使其不尝试修改字符串。就个人而言,我更喜欢后一种方法。
标签: c