c语言字符型数组传入函数?

c语言字符型数组传入函数?,第1张

在主函数里面,sizeof是数组占的空间

在作为参数时,会被转为指针

所以在函数里面打印的是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();就可以了

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13494992.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存