خطای has triggered a breakpoint. - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

خطای has triggered a breakpoint.

0 امتیاز

سلام

تابع به اینصورت کار میکنه که نام کاربری، شماره دانشجویی و رمز عبور یک کاربر رو میگیره، توی یک فایل مینویسه و بعد  به طول ارایه داینامیک students (از جنس استراکتی که خودمون تحت عنوان student تعریف کردیم و دو تا رشته کاراکتری و یک عدد صحیح داره)و با استفاده از تابع realloc اضافه میکنه.

مشکلی که هست اینجاست که وقتی به برنامه برای بار اول دستور داده میشه، برنامه به خوبی اجرا میشه، منتها وقتی برای بار دوم این کار رو انجام میدیم با خطای consoleapplication.exe has triggered a breakpoint. مواجه میشیم. که بعد با زدن روی دکمه break پنجره disassembly باز میشه(مطابق تصویر)

void signup_func(student *students,long long max_word_character,int *student_number,FILE *users) { // add a student to last line of users.txt
	char *username = (char *)malloc(max_word_character*sizeof(char));
	char *password = (char *)malloc(max_word_character*sizeof(char));
	int student_id;
	input_students(&students, *(student_number), users);
	scanf("%s %d %s", username,&student_id, password);
	fseek(users, zero, SEEK_SET);
	for (int i = zero; i < *(student_number); i++) { // check for simularity
		if (students[i].student_id== student_id || !strcmp(students[i].username, username)) {
			printf("user already exists\n");
			return;
		}
	}
	fseek(users, zero, SEEK_END);
	fprintf(users, "%s %d %s\n", username, student_id, password);
	*(student_number) = *(student_number)+one;
	students = (student*)realloc(students, *(student_number)*sizeof(student));
	students[*(student_number)-1].username = (char *)malloc(max_word_character*sizeof(char));
	students[*(student_number)-1].password = (char *)malloc(max_word_character*sizeof(char));
	strcpy(students[*(student_number)-1].username, username);
	strcpy(students[*(student_number)-1].password, password);
	students[*(student_number)-1].student_id = student_id;
	printf("done\n");
}

http://www.7khatcode.com/?qa=blob&qa_blobid=2369450904237208184

 

http://www.7khatcode.com/?qa=blob&qa_blobid=8007244497841371097

 

از ویژوال استودیو نسخه enterprise سال 2015 استفاده میکنم

سوال شده دی 7, 1400  بوسیله ی retamufa (امتیاز 96)   1 3 11

1 پاسخ

+1 امتیاز
به نظرم یک سری اصول رو رعایت کنید تا کد شما قابل فهم باشه.

یک سری توابع رو استفاده کردید که کدشون نیست.

کد خطا را در سوال تون ذکر کنید

تو ansi c هر متغیری را که اشغال می کنید در scope باید آزادش کنید.

اسم گذاری صحیح متغیر ها به صورتیکه معنا داره باشه.

همه کار ها رو توی یک تابع انجام ندید هر تابع یک کار مشخص انجام بده با یک اسم با مسما

اگر نیازی نیست دیگه از ansi c استفاده نکنید بجاش از c++  استفاده کنید که بشه یک کلاس با چندین متد
پاسخ داده شده دی 9, 1400 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
...