2015-11-06 64 views
0

我试图采取在字符数组如果字符串"This is a message"沿传递给函数是超大的,以便将它分隔符基于变量maxSize创建用C

例如可变大小的字符数组与4一个maxSize那么输出应该是"This, is ,a me,ssag,e"

char *placeDelimiter(char message[], int maxSize) { 
    int msgSize = strlen(message); 
    int delSize = (msgSize/maxSize); 
    int remSize = msgSize%maxSize; 
    int newSize = msgSize+delSize; 
    if (remSize==0) delSize--; //removes delimiter if on end of char array 
    char temp[newSize]; 
    int delPos = 0; 
    for (int x=0;x<msgSize;x++) { 
    if ((x+1)%maxSize == 0) temp[x] = ','; 
    temp[x+delPos] = message[x]; 
    delPos = (x+1)/maxSize; 
    } 
    return (char *)temp; 
} 

int main() 
{ 
    char msg[] = "This is a message"; 
    char *p; 
    p = placeDelimiter(msg, 4); 
    printf("%s", p); 
    return 0; 
} 

我的问题是,我正在从输入"This is a message"输出"This i,"(从网上编译器)。任何人都可以向我解释我做错了什么,以及如何解决它?

回答

1

char temp[newSize];是函数placeDelimiter()的局部变量。函数返回后访问它是未定义的行为。

您应该使用动态内存分配。

char* temp = malloc(newSize);