
在作为参数时,会被转为指针
所以在函数里面打印的是sizeof(char)
对于任意指针,sizeof的值都是当前编译器位数。你的是32位编译器,输出就是4
ps:4字节=32位
#include <stdioh>
#include <stringh>
#define MAX_LEN 200
void delCharArray(char [], char);
void delCharPtr(char , char);
int main(void)
{
char str[MAX_LEN], a;
char s1[MAX_LEN], s2[MAX_LEN];
gets(str);
a = getchar();
strcpy(s1, str);
strcpy(s2, str);
delCharArray(s1, a);
delCharPtr(&s2[0], a);
printf("%s\n%s\n", s1, s2);
}
void delCharArray(char str[], char ch)
{
char tmp[MAX_LEN];
int i, j;
for (i=j=0; str[i]!=NULL; i++)
if (str[i] != ch)
tmp[j++] = str[i];
tmp[j] = NULL;
strcpy(str, tmp);
}
void delCharPtr(char str, char ch)
{
int len = strlen(str);
char tmp = (char )malloc(len+1);
char sv = tmp;
while (str != NULL)
{
if (str != ch)
tmp++ = str;
str++;
}
tmp = NULL;
strcpy(str-len, sv);
free(sv);
}
1strstr和sort是系统函数
2使用的时候你要看php手册,看这个函数的使用说明
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。
------------------------------
说明函数是传值的,所以函数调用后对原$str没有影响
bool sort ( array &$array [, int $sort_flags ] )
本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
--------------------------------------------------------
注意:函数的参数是 array &$array,传递给函数的是数组的引用,排序就是对原数组进行排序,所以排序之后原数组$arr就发生了变化
这是因为,你输入d后回车,程序把d和回车都读进去了,所以显示出错。
修改方法:
在赋值语句:scanf("%c",&niu[i]);后加入getchar();就可以了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)