| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 735 人关注过本帖
标题:一题多解 出一道最easy的题目(关于去除字符串中所有空格的,题目及样本在1 ...
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:14 
一题多解 出一道最easy的题目(关于去除字符串中所有空格的,题目及样本在1楼)
程序代码:
#include <stdio.h>

int main()
{
    //程序目标很简单 就是去除所有空格最终输出Thisisateststring.
    char test[]=" This  is   a    test    string      .      ";
    char sbuf[200]={'\0'};
    int i=0,j=0;
    while(test[i++]!='\0')  if(test[i]!=' ')  sbuf[j++]=test[i];
    printf("$-:%sEND\n",sbuf);
    return 0;
}

最后输出:$-:Thisisateststring.END

主要目的就是看看这个题目究竟有多少种解法
搜索更多相关主题的帖子: color 字符串 样本 
2014-03-05 17:22
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int main()
{
    //程序目标很简单 就是去除所有空格最终输出Thisisateststring.
    char test[]=" This  is   a    test    string      .      ";
    char*p=test;
    printf("$-:");
    while(*++p!='\0') if(*p!=' ') printf("%c",*p);
    printf("END\n");
    return 0;
}
$-:Thisisateststring.END

DO IT YOURSELF !
2014-03-05 17:32
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int main()
{
    //程序目标很简单 就是去除所有空格最终输出Thisisateststring.
    char test[]=" This  is   a    test    string      .      ";
    int index=0;
    char* p=test;
    while(*++p!='\0') if(*p!=' ') test[index++]=*p,*p='\0';
    printf("$-:%sEND\n",&test[0]);
    return 0;
}
$-:Thisisateststring.END

DO IT YOURSELF !
2014-03-05 18:02
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:34 


char *remove_spase(char *p)
{
    // 不判断参数是否合法了
    char *pResult = (char *)malloc(strlen(p) * sizeof(char));
    char *pIndex = pResult;

    while (*p != '\0') {
        if (*p != ' ') {
            *pIndex = *p;
            pIndex++;
        }
        p++;
    }

    pIndex = '\0';
    return pResult; // 外面对其内存进行释放
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2014-03-05 19:22
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用yuccn在2014-3-5 19:22:29的发言:


 
char *remove_spase(char *p)
{
    // 不判断参数是否合法了
    char *pResult = (char *)malloc(strlen(p) * sizeof(char));
    char *pIndex = pResult;
 
    while (*p != '\0') {
        if (*p != ' ') {
            *pIndex = *p;
            pIndex++;
        }
        p++;  
    }
 
    pIndex = '\0';
    return pResult; // 外面对其内存进行释放
}
我给你补了一下代码  不知道是否是你正确的意图    反正你的结果是错误的  哈哈
程序代码:
#include <stdio.h>
#include <string.h>
#include <malloc.h>

char *remove_spase(char *p)
{
    // 不判断参数是否合法了
    char *pResult = (char *)malloc(strlen(p) * sizeof(char));
    char *pIndex = pResult;

    while (*p != '\0') {
        if (*p != ' ') {
            *pIndex = *p;
            pIndex++;
        }
        p++;
    }

    pIndex = '\0';
    return pResult; // 外面对其内存进行释放
} 

int  main()
{
     char test[]=" This  is   a    test    string      .      ";
     char *p=remove_spase(test);
     printf("$-:%sEND\n",p);
     free(p);
     return 0;
}
$-:Thisisateststring.屯屯屯屯屯屯屯屯屯屯屯屯屯???$銗END


DO IT YOURSELF !
2014-03-05 19:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
4楼代码加一句      memset(pResult,'\0',strlen(p));
可以成功  但是原因不明

貌似不加也没啥问题啊

DO IT YOURSELF !
2014-03-05 19:49
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:34 
程序代码:
while(*p)
{
  if (' ' != *p) putchar(*p);
  p++;
}


[fly]存在即是合理[/fly]
2014-03-05 20:09
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用azzbcc在2014-3-5 20:09:43的发言:

while(*p)
{
  if (' ' != *p) putchar(*p);
  p++;
}
小黑的没问题
程序代码:
#include <stdio.h>

int  main()
{
    char test[]=" This  is   a    test    string      .      ";
    char *p=test;
    printf("$-:");
    while(*p)
    {
        if (' ' != *p) putchar(*p);
        p++;
    }
    puts("END");
    return 0;
}




DO IT YOURSELF !
2014-03-05 20:43
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
以下是引用wp231957在2014-3-5 19:31:38的发言:

我给你补了一下代码  不知道是否是你正确的意图    反正你的结果是错误的  哈哈#include <stdio.h>
#include <string.h>
#include <malloc.h>

char *remove_spase(char *p)
{
    // 不判断参数是否合法了
    char *pResult = (char *)malloc(strlen(p) * sizeof(char));
    char *pIndex = pResult;

    while (*p != '\0') {
        if (*p != ' ') {
            *pIndex = *p;
            pIndex++;
        }
        p++;
    }

    pIndex = '\0';
    return pResult; // 外面对其内存进行释放
}

int  main()
{
     char test[]=" This  is   a    test    string      .      ";
     char *p=remove_spase(test);
     printf("$-:%sEND\n",p);
     free(p);
     return 0;
}
$-:Thisisateststring.屯屯屯屯屯屯屯屯屯屯屯屯屯???$銗END

char *remove_spase(char *p)
{
    // 不判断参数是否合法了
    char *pResult = (char *)malloc(strlen(p) * sizeof(char));
    char *pIndex = pResult;

    while (*p != '\0') {
        if (*p != ' ') {
            *pIndex = *p;
            pIndex++;
        }
        p++;
    }

    *pIndex = '\0'; // 漏了*
    return pResult; // 外面对其内存进行释放
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2014-03-05 20:50
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
以下是引用wp231957在2014-3-5 19:49:56的发言:

4楼代码加一句      memset(pResult,'\0',strlen(p));
可以成功  但是原因不明

貌似不加也没啥问题啊

原因是知道的,刚刚少了*,也就是没有把后面字符置为'\0',memset 也就是把整段都置为0了,就不需要在最后置为'\0'了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2014-03-05 20:54
快速回复:一题多解 出一道最easy的题目(关于去除字符串中所有空格的,题目及样 ...
数据加载中...
 
   



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

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