关于字符串指针
											 程序代码:
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARR_LEN 5
#define BUF_LEN 100
char *custom_concat(char *[]);
int main()
{     
    char *pStr[ARR_LEN] = { NULL };
    for (int i = 0; i < ARR_LEN; i++)
    {
        pStr[i] = malloc(BUF_LEN * sizeof(char));
        gets(pStr[i]);
    }
    printf("%s\n", custom_concat(pStr));
    return 0;
}
char *custom_concat(char *pStr[])
{
    char *pResult = NULL;
    char *pTemp = NULL;
    int totalLen = 0;
    for (int i = 0; i < ARR_LEN; i++)
    {
        totalLen += strlen(pStr[i]);
    }
    pResult = malloc((totalLen + 1) * sizeof(char));
    pTemp = pResult;  /*这里不懂,难道不应该反过来写么*/
    for (int i = 0; i < ARR_LEN; i++)
    {
        strncpy(pTemp, pStr[i], strlen(pStr[i]));
        pTemp += strlen(pStr[i]);
    }
    return pResult;/*明明没有对pResult赋值,要输出也应该是用pTemp啊*/
}编译及输出正常,但是不理解逻辑习题9.3 定义一个函数,它的参数是字符串数组指针,返回一个将所有字符串合并起来的字符串指针,每个字符串都用换行符来终止。如果输入数组中的原字符串将换行符作为最后一个字符,函数就不能给字符串添加另一个换行符。编写一个程序,从键盘读入几个字符串,用这个函数输出合并后的字符串。
书上练习,网友的答案,请问 函数custom_concta() 是如何正确返回字符串的呢? 不知道是哪里对pResult 赋值了,不是只分配了内存么
个人理解 应该 把 pResult = pTemp; 放到第二个for后面,return前面。
或者直接使用*pResult 存储,为什么还要用一个*pTemp?
[此贴子已经被作者于2019-5-2 10:54编辑过]



 
											





 
	    

 
	

