对c ++代码的修正

时间:2014-03-26 14:58:24

标签: c++

我想将一个字符串复制到其他字符串。假设我在一个变量中有一个字符串“happy day”,那么它应该被复制到其他变量中作为“happyday”。我尝试了以下代码,但它无效。

#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include<string.h>

int count=0;

void main()
{
    char a[20],b[20];
    int i=0,j=0;

    clrscr();

    cin>>a;
    while(a[i]!='\0')
    {
        b[j]=a[i];
        count++;
        i++;j++;
    }
    i++;
    while(a[i]!='\0')
    {
        b[j]=a[i];
        count++;
        i++;j++;
    }

    cout<<count<<"\n";
    cout<<b;
    getch();
}

2 个答案:

答案 0 :(得分:2)

最好的办法是使用算法remove_ifisspace

remove_if(str.begin(), str.end(), isspace);

remove_if最多只能制作一份数据

参考isspace并包含ctype.h。我想您可能还需要在::的开头添加isspace

答案 1 :(得分:1)

  1. 第二个while循环不是必需的,甚至是错误的。
  2. 您不复制终止零。
  3. 复制时你不打扰空间
  4. 使用cin阅读将在第一个空格停止
  5. 这有效:

    void main()
    {
        char a[20], b[20];
    
        fgets(a, 20, stdin) ;
    
        char c ;
        int i = 0, j = 0;    
        do 
        {
            c = a[i++] ; 
    
            if (c != ' ')
               b[j++] = c;
    
        } while (c != '\0') ;
    
        cout << i << "\n";
        cout << b;
    
        getch();
    }