خطأ: المهمة تجعل المؤشر من عدد صحيح بدون طاقم ... في C Prog
سؤال
أحصل على هذا الخطأ كلما قمت بتشغيل البرنامج "المهمة تجعل المؤشر من عدد صحيح بدون طاقم". الكود الخاص بي مكتوب أدناه .... الرجاء المساعدة ... شكرا
struct student {
char studentID[6];
char name[31];
char course [6];
};
struct student *array[MAX];
struct student dummy;
int recordCtr=0;
int read(){
FILE *stream = NULL;
int ctr;
char linebuffer[45];
char delims[]=", ";
char *number[3];
char *token = NULL;
stream = fopen("student.txt", "rt");
if (stream == NULL) stream = fopen("student.txt", "wt");
else {
printf("\nReading the student list directory. Wait a moment please...");
while(!feof(stream)){
array[recordCtr]=(struct student*)malloc(sizeof(struct student));
while(!feof(stream)) {
fgets(linebuffer, 46, stream);
token = strtok(linebuffer, delims); //This is where the error appears
ctr=0;
while(token != NULL){
strcpy(number[ctr], linebuffer);
token = strtok(NULL, delims); //This is where the error appears
ctr++;
}
strcpy(array[recordCtr] -> studentID,number[0]);
strcpy(array[recordCtr] -> name,number[1]);
strcpy(array[recordCtr] -> course,number[2]);
}
recordCtr++;
}
recordCtr--;
fclose(stream);
}
المحلول
لم تقم بذلك (على الأقل ، ليس في الكود المحفوظ) #include
د الرأس الذي يحدد strtok
وظيفة. في C ، من المفترض أن تعود الوظائف التي لم يتم النماذج int
. وبالتالي ، نحن نخصص من int
(نتيجة الوظيفة) إلى أ char*
(نوع من token
) بدون طاقم.
نحن لا نريد طبعا ، بالطبع. نريد ان #include
الرأس ، بحيث يفهم المترجم ماذا strtok
عائدات.
لكننا أيضًا لا نريد استخدامه حقًا strtok
إذا كان هناك أي شيء آخر من شأنه القيام بهذه المهمة. لديها قيود عديدة غير واضحة. لتحليل سلسلة قوية ، حاول sscanf
.
نصائح أخرى
أعتقد أنكchar *number[3];
يجب ان يكون char number[3];
, ، أو على الأقل يجب عليك تخصيص مساحة لكل من number
مؤشرات.