嘿伙计们(预先警告这个问题让我觉得n00b所以我可能是),
我能够动态创建一个数组,并且我能够有效地将qsort用于静态创建的数组,但是在动态创建的数组上使用qsort时遇到了麻烦.我想我对使用指针感到磕磕绊绊.
struct my_struct {
FILE *fp;
int i;
};
Run Code Online (Sandbox Code Playgroud)
所以数组包含上面的结构,我想用int值对它进行排序.
静态地说,我可以这样做:
struct my_struct array[4];
Run Code Online (Sandbox Code Playgroud)
排序:
qsort((void *) &array, sizeof(array) / sizeof(struct my_struct), sizeof(struct my_struct), *compare);
Run Code Online (Sandbox Code Playgroud)
-
如果我这样创建数组:
struct my_struct* = malloc(sizeof(struct process) * 4);
Run Code Online (Sandbox Code Playgroud)
一切都编译并运行,但执行永远不会进入比较功能.
任何帮助将不胜感激
首先,如果你以前见过这个,请道歉.我努力尝试在这里和其他地方找到答案.
我是C的新手,仍然专注于指针和有效使用它们.
代码(为简洁起见编辑):
void getInFile(char fileName[], FILE *inFile) {
inFile = fopen(fileName, "r");
if(inFile == NULL) {
printf("Error1");
}
}
void function(FILE *inFile) {
if(inFile == NULL) {
printf("Error2");
}
}
int main(int argc, char *argv[]) {
FILE *inFile = 0;
getInFile(argv[2], inFile);
function(inFile);
}
Run Code Online (Sandbox Code Playgroud)
如上所述,运行程序会产生错误2.如果我将getInFile从void更改为FILE*返回类型并且在main方法中有以下内容我得到error1:
inFile = getInFile(argv[2], inFile);
Run Code Online (Sandbox Code Playgroud)
这是我使用指针不正确的一个例子还是我做错了什么?