编译此代码时:
void rep_and_print(char * str, char * patt, int l, int i)
{
char * pch; // pointer to occurence
char * s;
s = str; // save original pointer
if (i == 0)
{
while ( (pch = strstr(str,patt)) != NULL)
{
// FOUND
memset (pch,'*',l); // Set asterisk
str = pch + l; // move pointer to the end of asterisks to found new occurences
}
}
else
{
while ( (pch = strcasestr(str,patt)) != NULL)
{
// FOUND
memset (pch,'*',l); // Set asterisk
str = pch + l; // move pointer to the end of asterisks to found new occurences
}
}
printf ("%s",s);
}
我收到了这个错误:
警告:赋值在没有强制转换的情况下从整数中生成指针 [默认启用]
while ( (pch = strcasestr(str,patt)) != NULL)
并且有一个箭头指向pch
和strcasestr
答案 0 :(得分:2)
从手册页:
#define _GNU_SOURCE #include <string.h> char *strcasestr(const char *haystack, const char *needle);
您需要在#define _GNU_SOURCE
(以及#include <string.h>
之前)添加#include <stdio.h>
,以便可以看到函数声明。
答案 1 :(得分:0)
while((pch = strcasestr(str,patt))!= NULL) strcasestr是一个非标准扩展,因此您必须在文件的第一行添加#define _GNU_SOURCE,或使用-D_GNU_SOURCE进行编译。