- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
大约 20 个小时过去了,我仍然没有设法弄清楚问题是什么。
首先,有带有这些参数的主函数。
char ***matrix;
int line, maxCollumn, i, j;
int lineData[100];
然后调用函数
PutFirstAndLast(&matrix, &line, &maxCollumn, lineData);
此函数旨在动态分配我的矩阵并返回其行数和列数。 lineData 用于存储我在每一行上有多少项目,因为稍后在函数中我将不得不用“”填充“空白”空间。
我的麻烦函数有这个标题
int PutFirstAndLast(char**** matrixPointer, int *line2, int *maxCollumn2, int *lineArray)
在这个函数中,我将生成一个以半延迟方式称为“array”的新矩阵,我将为新“array”分配内存,以便将文件“in.txt”中的每个单词放入其中。
int PutFirstAndLast(char**** matrixPointer, int *line2, int *maxCollumn2, int *lineArray)
{
FILE *inputFile;
char buffer[100], *p;
char ***array;
int i, j, collumn, maxCollumn = 0, line = -1;
inputFile = fopen("in.txt", "r");
while (fgets(buffer, 100, inputFile))
{
line++;
collumn = 0;
if (line == 0)
array = (char***)malloc(sizeof(char**));
else
array = (char***)realloc(array, sizeof(char**)* (line + 1) );
p = strtok(buffer, " \n");
while (p)
{
//taking each word and allocating a space for it
if (collumn == 0)
array[line] = (char**)malloc(sizeof(char*));
else
array[line] = (char**)realloc(array[line], sizeof(char*)* (collumn + 1));
array[line][collumn] = (char*)malloc(sizeof(char)* strlen(p) + 1);
strcpy(array[line][collumn], p);
collumn++;
p = strtok(NULL, " \n");
}
// Here i count what is the maximum numbers of items on a line
lineArray[line] = collumn;
if (collumn > maxCollumn)
maxCollumn = collumn;
}
// Here i add "" in the "empty spaces.
for (i = 0; i < line + 1; i++)
{
for (j = lineArray[i]; j < maxCollumn; j++)
{
array[i] = (char**)realloc(array[i], sizeof(char*)* maxCollumn);
array[i][j] = (char*)malloc(sizeof(char)* 10);
strcpy(array[i][j], "");
}
}
fclose(inputFile);
*matrixPointer = array;
*maxCollumn2 = maxCollumn;
*line2 = line;
return 0;
}
问题是,当我进入 main 并执行此操作时
for (i = 0; i < line + 1; i++)
{
for (j = 0; j < maxCollumn; j++)
{
printf("%s", matrix[i][j]);
matrix[i][j] = (char*)realloc(matrix, sizeof(char)* 11);
}
}
对于项目矩阵[2][0],存在错误“访问违规读取位置”。
如果我这样做了
for (i = 0; i < line + 1; i++)
{
for (j = 0; j < maxCollumn; j++)
{
printf("%s", matrix[i][j]);
// matrix[i][j] = (char*)realloc(matrix, sizeof(char)* 11);
}
}
没问题,我矩阵中的所有单词都显示在屏幕上\
我的文本模型是:
etesta este astru
de mext pentru bun
examen multa programare
通过在“空”空格中添加“”,我指的是:将“”放入数组中,如下所示:
etesta este astru
de mext pentru bun
examen multa programare
最佳答案
当它应该是 matrix[i][j]
时,您使用 matrix
指针调用了 realloc
函数:
matrix[i][j] = realloc(matrix[i][j], sizeof(char)* 11);
或者,如果您想保护自己免受失败:
char *temp = realloc(matrix[i][j], sizeof(char)* 11);
if (temp != NULL)
matrix[i][j] = temp;
关于C char**** 数组动态分配表现尴尬,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21399886/
我想为进入 C# web api 应用程序的一些请求编写一个简单的负载均衡器。 (我只使用 C# 的东西作为创建 Web 服务器的便捷方式)。 解决这个问题的最佳方法是什么? (我还没有真正在 F#
作为一名数据库开发人员,当我尝试将仅数据转储到 PostgreSQL(10.1) 数据库“tlesson”时,我遇到了这个通知。 通知=> pg_dump: NOTICE: there are c
我是一名优秀的程序员,十分优秀!