尝试增加C中的字符串指针

时间:2018-12-04 01:20:09

标签: c string pointers

基本上,我想做的是采用一个简单的字符串,例如abcd,然后将其添加到一个新的字符串中,每个字母之间都带有星号,例如a*b*c*d。但是似乎我应该执行此功能的问题。这是我的代码。

char widen_stars(char *user1p, char *user2p) {

    char *newStr;

    newStr = malloc(20 * sizeof(int));

    while (*user1p)  {
        *newStr = *user1p;
        //return printf("Test: %s \n", newStr);
        newStr++;
        //return printf("Test: %s \n", newStr);
        user1p++;
        *newStr = '*';
        newStr++;
    }

    return printf("String with asterisks: %s \n", newStr);
}

我要做的是创建一个新字符串,在其中添加原始字母的一个字母,然后紧跟星号,然后递增并继续循环。

我遇到问题的地方是在第二个return printf test上什么都没打印出来,但是在第一个return printf test上它表明我已经成功地将第一个字符移了,但是我没有确定发生了什么事。编程的新手,所以感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要保留原始的newStr值。零也终止它。

char widen_stars(char *user1p, char *user2p) {

char *newStr;
newStr = malloc(20 * sizeof(int));
char *keep = newstr;    // save start of new string
while (*user1p)  {
    *newStr = *user1p;
    //return printf("Test: %s \n", newStr);
    newStr++;
    //return printf("Test: %s \n", newStr);
    user1p++;
    *newStr = '*';
    newStr++;
}
*newstr  = '\0'; // zero terminate new string
return printf("String with asterisks: %s \n", keep); // print it
}