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字符串&如果你不打算修改它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |