| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 541 人关注过本帖
标题:高手 帮帮忙 程序只能执行到一半
只看楼主 加入收藏
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:4 
高手 帮帮忙 程序只能执行到一半
#include

void fun(char *a, int n)
{
int i=0, j=0;
char *p=a;

while(*a)
p++;

p--;

while(*p=='*')
{
p--;
i++;
}
if(i>n)
*(p+n)='\0';
}



void main()
{
char s[30];
int n;
printf("enter a string :");
gets(s);
printf("enter n:\n");
scanf("%d", n);
fun(s, n);
printf("the string after deleted\n:");
puts(s);
getch();
}

功能 将字符尾部多于n个的*号删除   前面的*号不用删
帮帮看看 那里出错了
2015-08-15 16:52
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:5 
你的第二个while又会把p指针移到开头。直接用数组的下标运算就可以了。

一片落叶掉进了回忆的流年。
2015-08-15 17:34
实际应用
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:89
专家分:341
注 册:2015-5-30
收藏
得分:5 
1, scanf("%d", n); n 前加&
2, while(*a) a 后加++
2015-08-15 22:26
corfox
Rank: 2
等 级:论坛游民
帖 子:15
专家分:53
注 册:2015-7-29
收藏
得分:10 



程序代码:
#include <stdio.h>
#include <string.h>

void fun(char *a, int n)
{
    int count = 0;
    int length = strlen(a);
    char *p = a + length - 1;
    while (*p-- == '*')
    {
        ++count;
    }
    if (count > n)
    {
        length -= n;
        *(a + length) = '\0';
    }
}
/*
char *p=a;

while(*a)
p++;

p--;

while(*p=='*')
{
p--;
i++;
}
if(i>n)
*(p+n)='\0';
}*/



int main(void)
{
char s[30];
int n;
printf("enter a string :");
gets(s);
printf("enter n:\n");
scanf("%d", &n);
fun(s, n);
printf("the string after deleted\n:");
puts(s);
getchar();
return 0;
}
这是按照你原来的程序改的,可以参考。
2015-08-16 10:14
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
收藏
得分:0 
回复 4楼 corfox
是的  豁然开朗  明白  我怎么写的那么麻烦   还有 不过后面那里  *(a+length+1)='\0'  还要加1

不要不要的。。。
2015-08-16 16:23
快速回复:高手 帮帮忙 程序只能执行到一半
数据加载中...
 
   



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

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