| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 962 人关注过本帖
标题:运行警告问题~
只看楼主 加入收藏
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
快速回复:运行警告问题~
数据加载中...
 
   



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

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