logo

Різниця між printf() і scanf() у C

вступ:

Printf() і Scanf() це вбудовані бібліотечні функції мовою C, які виконують відформатований вхід і відформатований вихід функції. Ці функції визначені та оголошені в файл заголовка stdio.h . The 'f' в printf і сканф виступає за 'відформатований' . Отже, обидві функції printf() і scanf() використовуйте коди в рядку формату, щоб вказати, як мають бути відформатовані вихідні чи вхідні значення. Для використання нам потрібно імпортувати файл заголовка printf() і scanf() :

 #include 

У цій статті ми обговоримо різницю між printf() і scanf(), але перш ніж обговорювати відмінності, ми повинні знати про printf() і scanf() з їх синтаксисом і прикладами.

Printf():

Це відбитки щось між подвійні лапки з специфікатори формату %c, %d,%f, тощо, щоб показати значення змінної або константи, а також може мати символи керуючої послідовності, наприклад , для новий рядок, і горизонтальна вкладка , відповідно.

замініть рядок у java

Синтаксис:

 printf('(string) %format_specifier (string)',variable); 

Scanf():

Це дозволяє нам читати одне або кілька значень, введених користувачем за допомогою клавіатури на консолі. Ми можемо розмістити скільки завгодно специфікатори формату скільки завгодно вхідних даних із форматом або без нього.

Синтаксис:

 scanf(%format_specifier, &pointer_to_variable); 

Рядок специфікатора формату:

У першому параметрі printf і сканф , проходимо рядок формату або рядок специфікатора формату , і ми визначаємо, який тип значення користувач збирається ввести.

Тип даних Перетворення рядок формату
Ціле число коротке ціле число %d або % i
короткий без знака % в
давно підписаний % л.д
давно без підпису % lu
беззнаковий шістнадцятковий % х
беззнаковий вісімковий %O
Справжня плавати % f або % g
подвійний %lf
підписаний символ %c
беззнаковий символ %c
рядок %s

Наприклад, якщо користувач входить двадцять як вхід, як двадцять це десяткове ціле значення , ми вказуємо всі десяткові цілі значення в C за допомогою %d специфікатор формату . Так само плаваючі значення вказуються за допомогою %f .

Базовий код для Printf() і Scanf():

приклад 1:

 #include int main() { int a, b; int sum = 0, sub = 0, mul = 0; printf('Please enter the two values:'); /* Read input */ scanf('%d%d', &a, &b); sum = a+b; sub = a-b; mul = a*b; /* Print output */ printf('The sum = %d 
sub = %d 
mul = %d', sum, sub, mul); return 0; } 

Вихід:

 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

Пояснення:

У наведеній вище програмі ми використовуємо scanf() читати вхідні дані з консолі та зберігати їх у змінних a & b. Після цього виконуємо арифметичні дії типу додаток , віднімання , і множення і пізніше зберігати результати в три нові змінні (Sum, Sub, Mul). Нарешті, використовуючи функція printf(). , друкуємо результати.

Приклад 2: -

 #include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; } 

У наведеній вище програмі scanf() читає два входи з програми, навіть якщо ми передаємо одну змінну, тому що ми вказали два специфікатори формату . Завжди пам’ятай, Ін scanf()/printf() всі специфікатори формату які ми передаємо, мають бути однаковими, інакше ми можемо отримати деякі несподівані помилки виконання.

що таке стек в java

приклад 3:

 int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; } 

Вихід:

 5 Execution finished... 

Пояснення:

У наведеній вище програмі scanf() читає лише один вхід від користувача, оскільки ми вказали лише один специфікатор формату . Отже, з цього прикладу ми робимо висновок, що жоден із вхідних даних не буде прийнято залежно від кількості специфікатори формату .

Приклад 4:

 #include int main() { int a; scanf('%d', a); printf('Execution finished'); } 

Вихід:

 6 Segmentation fault 

Пояснення:

У наведеній вище програмі ми передаємо значення змінної scanf() замість адреси змінної. Це призведе до a Помилка виконання . У Linux ми отримаємо помилку segmentation fault.

python зберегти json у файл

Приклад 5:

 #include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); } 

Вихід:

 the value of a = 10, the value of b = 20 

Пояснення:

У наведеній вище програмі, коли printf сканує рядок формату, він замінить специфікатори формату (%d) з фактичними значеннями, до яких ми переходимо printf() . тобто перший специфікатор формату буде замінено першим значенням, яке ми передаємо printf(), і так далі.

Основні відмінності між Printf() і Scanf()

Кілька відмінностей між printf і scanf: -

    функція printf(). виводить дані на стандартний вихід, тобто на консоль. На противагу цьому функція scanf(). зчитує дані зі стандартного введення, тобто пристроїв введення printf() рідко використовує покажчик у кількох випадках, але scanf() завжди використовує вказівник для призначення значення даній змінній. printf() і scanf() обидва мають однаковий тип повернення ціле число . The printf() повертає кількість символів, які він успішно надрукував на консолі, тоді як scanf() повертається 0,1 або EOF на основі наданого специфікатора формату.