| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 627 人关注过本帖
标题:一个非常非常非常简单的代码,但不知道为什么达不到效果
只看楼主 加入收藏
iyybpatrick
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
一个非常非常非常简单的代码,但不知道为什么达不到效果
目标:想要从已获取的char*指针中获取空格前的部分,char *s="at station",获取char *t="at"  (这里后面不能有多余的空格)
问题:我提取好了保存在t里面了,但是和目标提取文件"at"不相同(strcmp显示为1),后来我用一个for循环发现at后面有很多空格,不过我new的空间不是只有2个么,会什么会出现多的空格呢?
代码如下:(请无视过多的头文件,我只是截取的部分代码出来)
#include<iostream>
#include<fstream>
#include<string>
#include <cstring>
#include<ctime>
#include<vector>
using namespace std;
int get_n(char*s)
{
    int i = 0;
    while (s[i] != ' ')
    {
        i++;
    }

    return i;
}
int main()
{
    char *s = "at train station";
    int k = get_n(s);
    char *t = new char[k];
    for (int i = 0; i < k; i++)
    {
        *(t + i) = *(s+i);
    }
    char *t1 = "at";
    cout << strcmp(t, t1);
    for (int m = 0; m < 4; m++){
        cout << *(t+m);
    }
    return 0;
}


求助啊,第一次发帖
搜索更多相关主题的帖子: include station 空间 
2015-10-15 21:49
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:10 
char *t = new char[k];
改成
char t[k];
 
一个字符串就一个指针
2015-10-15 22:25
iyybpatrick
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-15
收藏
得分:0 
回复 2楼 yangfrancis
最先我就想这样干的,他说“应输入常量表达式”
所以我迫不得已只有使用new char
2015-10-15 23:06
iyybpatrick
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-15
收藏
得分:0 
麻烦各位朋友帮帮忙呀,我卡这儿好久了,下周就要due了....还要赶着码代码~~
2015-10-15 23:12
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:10 
看楼主用了关键字new,
找半天没找到delete
2015-10-15 23:17
iyybpatrick
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-15
收藏
得分:0 
回复 5楼 hjx1120
请问new新建了就要delete么,会不会把整个char都delete了?(我是新手,请勿喷~%>_<%)
同时请问,如果我要达到预期效果的话,应该怎么修改呢?
2015-10-16 00:08
iyybpatrick
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-15
收藏
得分:0 
问题解决了,加上t[k]='\0';
2015-10-16 00:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用iyybpatrick在2015-10-16 00:31:43的发言:

问题解决了,加上t[k]='\0';
那么,你就不能 new char[k]; 而是得 new char[k+1];
BTW:你代码错误的地方特多,做法特别奇怪,奇怪得我都不知道怎么开口,要不你将题目贴出来看看。

2015-10-16 08:19
ITCD
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:18
注 册:2012-11-26
收藏
得分:0 
C程序玩C++运算符不太好
2015-10-16 19:29
快速回复:一个非常非常非常简单的代码,但不知道为什么达不到效果
数据加载中...
 
   



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

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