我最近在C中开始了一个小玩具项目,并且一直在试图模仿作为python字符串对象一部分的strip()功能的最佳方法.
读取fscanf或sscanf表示字符串被处理到遇到的第一个空格.
fgets也无济于事,因为我仍然有新的线条.我确实尝试了一个strchr()来搜索空格并将返回的指针设置为'\ 0',但这似乎不起作用.
假设我有一个用这样的东西创建的二维数组,
char **foo = (char **) malloc(height * sizeof(char *));
for(i = 0; i <= height; i++)
foo[i] = (char *) malloc (width * sizeof(char *));
Run Code Online (Sandbox Code Playgroud)
首先,这甚至是创建像这样的数组的正确方法吗?这里的问题是,'height'和'width'是在运行时设置的东西.
这似乎有效,但这是释放这个2D阵列的最佳策略.免费(funge)听起来不对.通过这里的其他帖子,我想我会逐一释放每一行?
我确实试过这样的事,
for (height = 0; height < ip_ptr->funge_height; height++) {
free(funge[height]);
}
free(funge)
Run Code Online (Sandbox Code Playgroud)
然而,这给了我一个双重自由指针异常.这是不是意味着,我不需要管理这段记忆?我的印象是,对于每个malloc的内存,我们应该调用free().