注册 登录
编程论坛 C++教室

求解,我错在哪里--指针

水浙江雪 发布于 2014-05-19 15:13, 614 次点击
编写函数newcopy(char *new,char *old),它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中。
  要求:
  (1)在主函数中以初始化方式输入一个字符串;
  (2)调用newcopy()函数;
  (3)在主函数中输出处理后的结果。

#include <iostream>
using namespace std;

void newcopy(char *new,char *old);
int main()
{
    char *old,*new,a[10];
    old=a;
    new=a;
    cout<<"Please input a character:"<<endl;
    gets(a);
    newcopy(char *new,char *old);
    cout<<new<<endl;
}

void newcopy(char *new,char *old)
{
    int j;
    for(old=a;*old!='\0';old++)
    {
        if((*old)>'z'||(*old)<'a')
        {
            *(new+j)=*old;
            j++;
        }
        *(new+j)='\0';
    }
}
求大神指点,我哪儿错了。谢谢。
5 回复
#2
wp2319572014-05-19 15:29
错误之处甚多

1、new是关键字 不可以做变量名称使用
2、函数调用 形参 实参 还是区别不开
#3
embed_xuel2014-05-19 15:30
从hello,world稳步前进
#4
yangfrancis2014-05-22 11:16
new和old都是指针,在赋值的时候应该考虑在值的前面加个&吧?
还有,怎么没有看到接受用户输入字符串的语句?如果要在代码中直接赋给old所指内存一个字符值的话就要使用*old='a'这种形式了。
#5
ClarenceC2014-05-23 11:22
  您好,还有一个问题您可能没注意到。在函数体内部定义的变量是没有默认初始化的,所以您在第一次调用 j 的时候就不能达到您本来要的效果。(至少在vs2012上是这样的。仅供您参考!)
#6
Erlosshex2014-05-24 09:58
建议好好学习基础知识
1