【发布时间】:2022-01-23 05:30:49
【问题描述】:
char* scanString()
{
char* str = NULL;
char* temp = NULL;
int numOfChars = 0;
char c = '0';
while (c != '\n')
{
scanf("%c", &c);
str = (char*)realloc(str, sizeof(char) * (numOfChars + 1));
temp = str;
if (str == NULL)
{
str = temp;
return str;
}
str[numOfChars] = c;
if (c == '\n')
{
str[numOfChars] = '\0';
}
numOfChars++;
}
return str;
}
int main()
{
char** doublePointer = NULL;
char* m = scanString();
char* token = strtok(m, ",");
int i = 0;
while (token != NULL)
{
doublePointer = (char**)realloc(doublePointer, sizeof(char*) * (i+1));
if (doublePointer)
doublePointer[i] = (char*)realloc(doublePointer[i], strlen(token) + 1);
strcpy(doublePointer[i], token);
token = strtok(NULL, ",");
i++;
}
for (int k = 0; k <= i; k++)
{
printf("%d: %s\n", k + 1, doublePointer[k]);
}
return 0;
}
我试图将像“option1,oprion2,option3”这样的字符串放入字符串数组中,然后将每个选项放在数组中的位置。 最后,我想按放置顺序打印 wach 选项。 我究竟做错了什么? 感谢您的帮助。
【问题讨论】:
-
realloc(doublePointer[i]这是一个问题,因为doublePointer[i]尚未初始化并且可以包含任何垃圾值。为什么在那里使用realloc?只需使用malloc。如果修复无法解决问题,请更新您的问题以解释您遇到的具体错误或不正确行为。 -
成功了!谢谢
标签: c string pointers realloc strtok