如何在C中复制此字符串?

时间:2016-06-07 13:10:04

标签: c string

我正在尝试生成2个字符串,其中第二个字符串应该是第一个字符串的循环。

示例:

input 1(key) = passw
input 2(str) = mymessagemymessage
output 1(keyloop) = passwpasspasswpass
output 2(str) = mymessagemymessage

这里的问题不是生成keyloop,而是实际上保持输入2不变。我目前的输出如下:

output 1(keyloop) = passwpasspasswpass 
output 2(str) = passwpasspasswpass **<-- not the desired output**

这是代码:

    int main (int argc, string argv[])
    {

        string key = argv[1];
        int k = 0;

        string str = GetString();

        string keyloop = str;

        for (int i=0; i<strlen(keyloop); i++)
        {
            if ( k == strlen(key))
            {
                k = 0;
                keyloop[i]=key[k];
                k++;                    
            }
            else if (k != strlen(key))
            {
                keyloop[i]=key[k];
                k++;
            }
            else
            {
                printf("error");
            }
        }
        printf("%s\n", keyloop);
        printf("%s\n", str);
}

我的代码是什么以及如何更改?

1 个答案:

答案 0 :(得分:6)

所以我设法从TabBar中的<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="sp" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Generation</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function(){ $("#selectEmp").on('change',function(){ if(this.val =='2') { $("#dept").css('display','block'); $("#dept").show(); } else { $("#dept").hide(); } }); }); </script> </head> <body> <div class="dropdown generate-file">Type :<sp:select id="selectEmp" path="type" name="selectEmp"> <option value="1">All</option> <option value="2">Department</option> <option value="3">Individual</option> </sp:select></div><br/><br/> <div class="dropdown generate-file" id="dept" style="display:none;"> Department:<sp:select path=""><span class="caret"></span> <option value="">R and D</option> <option value="">Development</option> <option value="">Sales</option> <option value="">Admin</option> <option value="">HR</option> <option value="">Marketing</option> <option value="">CRM</option> <option value="">Finance</option> </sp:select> </div> </body> </html> main string typedef(或char*推断了您的参数之后导致编译器错误)。如果没有,那么由于格式错误的const char*原型,程序的行为 undefined 。如果你告诉我们的话,那将是精彩; - )

继续,main因此只需string keyloop = str;浅拷贝,因此一个“字符串”中的更改将影响另一个“字符串”,因为它们指向相同的缓冲区!

修复?请改用strstrcpystrncpy。如果您使用strdup,请记住 作业,以便在完成复制后致电strdup