1. 下面函数的功能是 。 sss(char *s ,char *t ) { while((*s)&&(*t)&&(*t++== *s++)) ; return(*s-*t) ; } A. 求字符串的长度 B. 比较两个字符串的大小 C. 将字符串s 复制到字符串t 中 D. 将字符串s 接续到字符串t 中2. 下列函数的功能是 。 int fun1(char * x) { char *y=x; while(*y++) ; return(y-x-1);} A. 求字符串的长度 B. 比较两个字符串的大小 C. 将字符串X 复制到字符串Y D. 将字符串X 连接到字符串Y 后面
第一题答案:B。理由:*s与*t都是取出此时地址存储的值,while()语句里面的意思是,当指针s与t都不为空并且s指向的值等于t指向的值。。。当s或者t为空或者t与s指向的值不同时,while()结束,返回此时s指向的值减去t指向的值,所以为比较两个字符串的大小;第二题答案:A。理由:x的地址赋值给y,while()语句的功能就是当y不为空时自加1,当y为空时退出while()循环,此时y为字符串尾数,减去x减去1就是字符串长度
char *toc(const char *a, const char *b, char *c){ char *pc = c; if (a == NULL || b == NULL || c == NULL) return c; while(*a != '\0' && *b != '\0') { *c = (*a > *b) ? *a : *b; a++; b++; c++; } *c = '\0'; return pc;}
1,B解释如下:while语句(*s)&&(*t)&&(*t++==*s++)一句,当s串与t串不为NULL时,并且当他们对应位置上的字符不相等时,返回(*s-*t);若结果大于0;串一大于串二;若结果为零,两串相等类推;2,A解释如下:程序将串x头指针赋值给y指针,然后对y运算,当y指向的字符为空时,返回返回(y-x-1)求串长;
出错的地方:for(i=0;s2[i]!='\0';i++) {p[j+1]=&s2[i]; j=j+1;}原因:在上一个循环中i已经指向了下一个填充的地方,而j+1则让这个地方跳过去了,该地址没有被更新,于是,最终程序访问了非法的地址。改正:p[j]=&s2[i];