首页 > 解决方案 > 试图在C中增加一个字符串指针

问题描述

基本上我想做的是取一个简单的字符串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它显示我已经成功移动了第一个字符,我不确定发生了什么。新的编程,所以任何帮助表示赞赏。

标签: cstringpointers

解决方案


您需要保留原始的 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
}

推荐阅读