基本上,我想做的是采用一个简单的字符串,例如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
上它表明我已经成功地将第一个字符移了,但是我没有确定发生了什么事。编程的新手,所以感谢您的帮助。
答案 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
}