加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 我可以增加传递给函数的char *吗?

发布时间:2020-12-16 06:45:16 所属栏目:百科 来源:网络整理
导读:我正在开发一个C应用程序,它将从一组数据库字段构建一个固定长度的记录.我正在编写一个函数,它将输出记录接受为char *,要写入的字符串以及字段的总长度.该函数的目的是将字符串复制到char指针的当前位置,然后用空格填充剩余的长度.这是我正在做的简化示例. v
我正在开发一个C应用程序,它将从一组数据库字段构建一个固定长度的记录.我正在编写一个函数,它将输出记录接受为char *,要写入的字符串以及字段的总长度.该函数的目的是将字符串复制到char指针的当前位置,然后用空格填充剩余的长度.这是我正在做的简化示例.

void writeOut(char* output,string data,const int length) {
    if ((int) data.size() > length) {
        //Just truncate it
       data = data.substr(0,length);
    }
    int index = 0;
    while (index < (int) data.size()) {
        *output++ = data[index++];
    }
    while (index++ < length) {
        *output++ = ' ';
    }
}

int test() {
    char output[100];
    writeOut(output,"test1",10);
    writeOut(output,"test2","test3test4test5",10);
    cout << output;
}

我希望看到这样的事情.

test1     test2     test3test4

相反,我得到的只是……

test3test4

所以它在函数内递增char *,但仅在函数内.当函数结束时,char *就会回到它开始的位置.是否可以以在调用函数中更新指针的方式传递指针?

万一你不知道,我对C很新.任何建议将不胜感激.

解决方法

由于您没有通过引用传递参数,因此编译器会创建指针的副本并在函数内相应地修改副本.

将您的功能签名更改为以下内容.

void writeOut(char*& output,const int length)

您可能还想考虑将字符串作为const字符串&如果你不打算修改它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读