scanf("%15i[^\n]", current->phonenumber);
Как уже указывалось, это должно быть:
scanf("%15i", ¤t->phonenumber);
(вы повторили ту же ошибку в readSize
.)
Как правило, вы должны скомпилировать максимум предупреждений, доступных для вашего компилятора.Хороший компилятор предупредит вас, что вы передаете int
на scanf
, когда ожидается указатель.
Я хочу сохранить телефонные номера, так что максимум 15 чисел длины целых чисел
В типичной системе sizeof(current->phonenumber) == 4
.Это означает, что наибольшее значение, которое вы можете сохранить в этой переменной, составляет INT_MAX == 2147483647
.Это только 10 цифр, и подходит не для каждого 10-значного номера.
Если вы хотите сохранить каждое возможное 15-значное число, вам нужно хранить их по-разному (вchar phone[16]
или int64_t
).