我正在尝试接收一个超大的char数组,以便根据变量maxSize
例如,如果字符串"This is a message"
与maxSize
4
一起传递给函数,则输出应为"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 i,"
(来自在线编译器)获取输出"This is a message"
。任何人都可以向我解释我做错了什么以及如何解决它?
答案 0 :(得分:1)
char temp[newSize];
是函数placeDelimiter()
的局部变量。函数返回后访问它是Undefined behavior。
您应该使用动态内存分配。
char* temp = malloc(newSize);