当前位置: 代码迷 >> C语言 >> 运行警告问题~
  详细解决方案

运行警告问题~

热度:162   发布时间:2007-11-20 17:11:36.0
运行警告问题~
请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是
:删除所有值为y的元素。数组元素中的值和y的值由主函数通过健盘读入。


为什么会有两个警告~要怎样改才算正确~请指点~
搜索更多相关的解决方案: 警告  运行  

----------------解决方案--------------------------------------------------------

strcmp() 比较2个字符串 y 是字符。


----------------解决方案--------------------------------------------------------
char *strchr(const char * s, int c);
该函数返回一个指向字符串s中存放字符c的第一个位置的指针(标志结
束的空字符是字符串的一部分,因此也可以搜索到它)。如果没有找到该字
符,函数就返回空指针。

fun() 的实现也不对


[此贴子已经被作者于2007-11-20 17:20:12编辑过]


----------------解决方案--------------------------------------------------------

呵呵,又是这位大哥~今天你帮我很多忙了,都有点不好意思了~cosdos


----------------解决方案--------------------------------------------------------

先吃饭去,等下再说


7 楼

[此贴子已经被作者于2007-11-20 17:49:09编辑过]


----------------解决方案--------------------------------------------------------
正常了,原来字符不能当作字符串一样处理~谢谢~
----------------解决方案--------------------------------------------------------

/* 我是这样实现的 v 2.0 */

#include <stdio.h>
#include <string.h>

void fun(char * m, char y)
{
int i, j;
for(i = 0; m[i]; i++)
if(m[i] == y)
{
j = i+1;
while(m[j] == y)
j++;
strcpy(&m[i], &m[j]);
}
}

void fun(char * m, char y) /* v 2.1 */
{
int i, j, k;
for(i = 0; m[i]; i++)
if(m[i] == y)
{
j = i+1;
while(m[j] == y)
j++;
k = i;
do /* 使用循环把后续字符覆盖在 m[i] == y 位置 */
{
m[k] = m[j++];
}while(m[k++]);
}
}


/*
如果是 m[i] == y ,
那么将后面的字符拷贝到 m[i] 的位置,
从而覆盖原来的 m[i] (m[i] == y) 。
*/

[此贴子已经被作者于2007-11-20 18:53:54编辑过]


----------------解决方案--------------------------------------------------------
以下是引用zhuanghu1987在2007-11-20 17:26:57的发言:
正常了,原来字符不能当作字符串一样处理~谢谢~

字符串:
char name[7] = "cosdos";
字符:
char ch = 'c';

name 是字符数组的首地址。

ch 是一个值

一个是地址,一个是值,当然不能一样处理。
strcmp(name, ch); 把 ch 也当成地址(ch 这个地址是无效的)

-
-

[此贴子已经被作者于2007-11-20 18:17:58编辑过]


----------------解决方案--------------------------------------------------------

不好意思,
那时候比较赶时间,一时没看清楚

[此贴子已经被作者于2007-11-20 21:37:34编辑过]


----------------解决方案--------------------------------------------------------
以下是引用下雨浇花在2007-11-20 19:10:41的发言:

发现一个小错误,
红色的地方应该该为m[i] == 'y'

请仔细看。

void fun(char * m, char y)
{
}


----------------解决方案--------------------------------------------------------
  相关解决方案