三级C语言函数问题!
NUMBER 1
请问 memset 函数是怎么用的?例如memset(word,0,21)函数原型为
void *_Cdecl memset (void *s, int c, size_t n);
NUMBER 2
strcat(str,strrev(word))中的后面一个函数strrev(word)是一个什么函数?用法?
NUMBER 3
stricmp(word WORD[k])是什么函数?与函数strcmp是一样的吗?
下面有一个用该函数的例子
函数的目的是:分别按行删除行中的空格,标点符号及10个不区分大小写的英文单词(you for your on no if the in to all )余下的单词倒置后按行重新放在数组xx中
{
int i,k,tag;
char word[21],*p;
char str[80];
for(i=0;i<maxline;i++)
memset(str,0,80);
p=xx[i];
j=0;
memset(word,0,21);
while(*p)
{
if(isalpha(*p))
{word[j++]=*p++;
if(*p) continue;
}
tag=1;
for(k=0;k<10&&tag;k++)
if(stricmp(word,WORD[k])==0)
tag=0;
if(tag) strcat(str,strrev(word));
j=0;
memset(word,0,21)
while(*p&&(!isalpha(*p)))
p++;
}
strcpy(xx[i],str);
}
参考答案:NUMBER 1
memset(void *s , int c , unsigned n )
是将s中的前n个 字节 设为c的值返回指向s的指针
int a [ 100 ]
比如memset ( a , 0 , sizeof ( a ))是将a的所有字节设为0
NUMBER 2
strrev(char *str)是颠倒str的顺序
如char str [ 100 ] = “abc";
strrev (str)
则str为"cba"
NUMBER 3
stricmp(char *str1 , char *str2 )是将str1 与 str2 进行比较(忽略大小写)而strcmp()是区分大小写的
比如
str1 = "Abc" ;str2 = "abc"
则stricmp (str1 , str2 ) ==0 而 strcmp (str1 , str2 )!= 0