标题:运行警告问题~
只看楼主
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
 问题点数:0 回复次数:15 
运行警告问题~
请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是
:删除所有值为y的元素。数组元素中的值和y的值由主函数通过健盘读入。


为什么会有两个警告~要怎样改才算正确~请指点~
搜索更多相关主题的帖子: 警告 运行 
2007-11-20 17:11
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 

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


—>〉Sun〈<—
2007-11-20 17:14
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 
char *strchr(const char * s, int c);
该函数返回一个指向字符串s中存放字符c的第一个位置的指针(标志结
束的空字符是字符串的一部分,因此也可以搜索到它)。如果没有找到该字
符,函数就返回空指针。

fun() 的实现也不对


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


—>〉Sun〈<—
2007-11-20 17:16
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
得分:0 

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


凤凰涅磐,欲火重生.
2007-11-20 17:17
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 

先吃饭去,等下再说


7 楼

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


—>〉Sun〈<—
2007-11-20 17:21
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
得分:0 
正常了,原来字符不能当作字符串一样处理~谢谢~

凤凰涅磐,欲火重生.
2007-11-20 17:26
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 

/* 我是这样实现的 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编辑过]


—>〉Sun〈<—
2007-11-20 17:48
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 
以下是引用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编辑过]


—>〉Sun〈<—
2007-11-20 18:17
下雨浇花
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-9-19
得分:0 

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

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


花不浇,长不大;雨不下,不浇花...
2007-11-20 19:10
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 
以下是引用下雨浇花在2007-11-20 19:10:41的发言:

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

请仔细看。

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


—>〉Sun〈<—
2007-11-20 19:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-187366-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.794443 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved