ฟังก์ชัน อินพุตและเอาต์พุต ภาษา C – Input and Output Functions in C

ภาพรวม

อินพุตหมายถึงการป้อนข้อมูลลงในโปรแกรมและเอาต์พุตหมายถึงการรับข้อมูลออกจากโปรแกรม อินพุตและเอาต์พุตใน C ทำได้โดยใช้ไลบรารี Standard Input/Output ซึ่งเราสามารถรวมไว้ในโปรแกรมโดยใช้ไฟล์ส่วนหัว stdio.h ประกอบด้วยฟังก์ชันอินพุตและเอาต์พุตใน C เช่น scanf() สำหรับอินพุตและ printf() สำหรับเอาต์พุต สตรีมในการเขียนโปรแกรม C จะใช้เพื่อรับอินพุตหรือเอาต์พุตเพื่อขจัดความกังวลเกี่ยวกับตำแหน่งเริ่มต้นของข้อมูลหรือปลายทางสุดท้ายของข้อมูล


ขอบเขต

  • บทนำเกี่ยวกับอินพุต/เอาต์พุตใน C และฟังก์ชันอินพุตและเอาต์พุตใน C
  • อินพุต/เอาต์พุตของประเภทข้อมูลพื้นฐานและขั้นสูงใน C.
  • รายละเอียดของฟังก์ชั่นอินพุตและเอาต์พุตในตัวใน C ยังได้รับ


บทนำ

คำตอบของคุณจะเป็นอย่างไรถ้าฉันถามคุณว่าอัลกอริธึมคืออะไร? จากนั้นคุณอาจตอบกลับว่าเป็นขั้นตอนทีละขั้นตอนในชุดคำสั่งที่ให้ผลลัพธ์ที่ต้องการแก่เรา จากนั้นคำถามของฉันก็คือ ” ผลลัพธ์ ที่ต้องการ เพื่ออะไร” อีกครั้งเป็นเรื่องง่าย “ เอาต์พุตสำหรับอินพุต ” นี่หมายความว่าอัลกอริธึม/โปรแกรมส่วนใหญ่รับอินพุตเพื่อดำเนินการตามขั้นตอนทีละขั้นตอนเพื่อให้ได้เอาต์พุตที่ต้องการ

ป้อนข้อมูลผ่านแป้นพิมพ์ และเอาต์พุตอาจแสดงบนหน้าจอหรือพิมพ์ผ่านเครื่องพิมพ์หรือด้วยวิธีอื่น อย่างไรก็ตาม สำหรับอุปกรณ์ที่แตกต่างกัน อาจมีกระบวนการประเภทที่แตกต่างกันสำหรับอินพุต/เอาต์พุต ซึ่งอาจเป็นปัญหาสำหรับโปรแกรมเมอร์ เพื่อหลีกเลี่ยงปัญหานี้ อินพุต/เอาต์พุตทั้งหมดจะทำโดยใช้สตรีมในภาษา C ซึ่งจัดการอินพุต/เอาต์พุตโดยไม่ต้องดูแลว่าอินพุตมาจากไหนและปลายทางของเอาต์พุตเป็นอย่างไร สามารถเพิ่มลงในโปรแกรม C ใดก็ได้โดยแนะนำไลบรารี Standard Input/Output โดยใช้ส่วนหัว stdio.h

กระแสคือลำดับของไบต์ของข้อมูลในรูปแบบของลำดับของอักขระ ในขณะที่รับอินพุต เราได้รับลำดับของอักขระที่เข้าสู่โปรแกรมของเรา นั่นคือ สตรีมอินพุต และสำหรับเอาต์พุต เราจะส่งลำดับของอักขระออกจากโปรแกรมของเรา ซึ่งเป็นสตรีมเอาต์พุต ข้อได้เปรียบหลักของสตรีมคือทำให้การเขียนโปรแกรมอินพุต/เอาต์พุตไม่ขึ้นกับอุปกรณ์

อินพุตใน C คืออะไร?

คุณเคยเยี่ยมชมตู้เอทีเอ็มหรือไม่? ถ้าใช่ คุณทราบดีว่า ATM เป็นร้านธนาคารอิเล็กทรอนิกส์ที่ให้บริการธุรกรรมแก่ผู้ใช้ตามชุดคำสั่งบางชุด อย่างไรก็ตาม สำหรับผู้ใช้ทุกคน มันต้องมีรายละเอียดบางอย่าง เช่น PIN ซึ่งหมายความว่าอัลกอริทึมส่วนใหญ่มีชุดคำสั่งบางอย่าง แต่ต้องการข้อมูล/ข้อมูลภายนอกเพื่อแก้ไข อินพุตหมายถึงกระบวนการป้อนข้อมูลลงในโปรแกรม ข้อมูลสามารถอยู่ในบรรทัดคำสั่งหรือจากไฟล์ หน่วยความจำเข้าถึงโดยสุ่มจะถูกเก็บไว้โดยโปรแกรม C ขณะดำเนินการ เมื่อข้อมูลจากตำแหน่งภายนอกมายังโปรแกรม ข้อมูลนั้นจะถูกย้ายไปยัง RAM ซึ่งโปรแกรมสามารถเข้าถึงได้ และข้อมูลภายนอกนั้นเรียกว่าข้อมูลเข้า

เอาต์พุตใน C คืออะไร?

มาต่อเรื่อง ATM ของเรากันเพื่อที่ว่าเมื่อผู้ใช้ระบุ PIN และอินพุตที่จำเป็นอื่นๆ ATM หลังจากปฏิบัติตามคำแนะนำทั้งหมดแล้ว ให้เงินสด รายละเอียดธนาคาร หรือสิ่งอื่นๆ ที่ต้องการ ซึ่งหมายถึงอัลกอริทึมหลังจากดำเนินการกับอินพุตแล้ว ผลลัพธ์. อย่างไรก็ตาม มันอาจจะแตกต่างกันออกไป เช่น การแสดงผลบนหน้าจอหรือการพิมพ์ผ่านเครื่องพิมพ์หรือในอีกทางหนึ่ง เอาต์พุตหมายถึงการส่งข้อมูลออกจากโปรแกรมหรือเพียงแค่ส่งข้อมูลไปยังตำแหน่งออกจากหน่วยความจำของโปรแกรม ปลายทางของข้อมูลอาจเป็นหน้าจอ เครื่องพิมพ์ หรือดิสก์ เพื่อให้ได้ผลลัพธ์ ไม่จำเป็นต้องมีอินพุตเสมอไป เช่น อัลกอริธึมสำหรับการสร้างตัวเลขสุ่มจะส่งกลับตัวเลขสุ่มโดยไม่มีอินพุตใดๆ

จะรับอินพุตและเอาต์พุตของประเภทพื้นฐานใน C ได้อย่างไร

เรามีฟังก์ชันอินพุตและเอาต์พุตใน C ลองดูกัน: Input

สำหรับการป้อนข้อมูลใน C เราใช้ฟังก์ชันในตัวของ C scanf( ) scanf() วิธีอ่านอินพุตจากสตรีมอินพุตมาตรฐาน stdin และสแกนอินพุตนั้นตามประเภทที่ระบุ

ไวยากรณ์ของการป้อนข้อมูลใน C

scanf(“%A”, &variableOfAType);  


ไวยากรณ์ข้างต้นใช้สำหรับรับข้อมูลจากผู้ใช้ โดยที่ %A กำหนดตัวระบุรูปแบบใน C จะช่วยให้คอมไพเลอร์ระบุประเภทข้อมูลของตัวแปรที่เราจะรับอินพุต และ ‘&’ เป็นตัวดำเนินการที่อยู่ใน C ช่วยให้คอมไพเลอร์เปลี่ยนค่าจริงของตัวแปรนี้ที่เก็บไว้ที่ ที่อยู่นี้ใน memory

เอาท์พุต

สำหรับการแสดงผลไปยังผู้ใช้ใน C เราใช้ฟังก์ชันในตัวของ C printf() printf() วิธีเขียนเอาต์พุตไปยังเอาต์พุตสตรีมมาตรฐาน stdout และพิมพ์ค่าที่ส่งผ่านเป็นพารามิเตอร์

ไวยากรณ์ของเอาต์พุตการแสดงผลใน C

printf(“%A”, variableOfAType); 


ไวยากรณ์ด้านบนสำหรับการแสดงผลที่ส่งออกไปยังผู้ใช้ โดยที่ %A กำหนด ตัวระบุ รูปแบบใน C จะช่วยให้คอมไพเลอร์ระบุประเภทข้อมูลของตัวแปรที่เราจะส่งออก

ประเภทพื้นฐานของอินพุตและเอาต์พุตใน C รวมถึงประเภทข้อมูลของตัวแปร เช่น int, float, char เป็นต้น A ในไวยากรณ์ด้านบนจะถูกแทนที่ด้วยตัวระบุรูปแบบที่เหมาะสมของประเภทนั้น

ตัวระบุรูปแบบสำหรับประเภทข้อมูลที่แตกต่างกัน

Data typevalue of A
int%d
float%f
char%c
long%l or %ld
double%lf


ไวยากรณ์ของอินพุตและเอาต์พุตของประเภทข้อมูลพื้นฐานใน C

Integer: 
Input: scanf("%d", & intVariable);
Output: printf("%d", intVariable);

Float: 
Input: scanf("%f", & floatVariable);
Output: printf("%f", floatVariable);

Character: 
Input: scanf("%c", & charVariable);
Output: printf("%c", charVariable);


ตัวอย่าง

#include <stdio.h>
 
int main()
{
 
   // Declaring the variables
   int number;
   char character;
   float float_number;
 
   // --- Integer ---
 
   // Taking input for integer 
   printf("Enter the integer: ");
   scanf("%d", &number);
 
   // Printing Output of integer
   printf("\nEntered integer is: %d", number);
   
 
   // --- Float ---
 
   // Taking input of float
   printf("\nEnter the float: ");
   scanf("%f", &float_number);
 
   // Printing Output of float
   
   printf("\nEntered float is: %f", float_number);
 
   // --- Character ---
 
   // Taking input of Character
   printf("\n\nEnter the Character: ");
   scanf("%s", &character);
 
   // Printing Output of Character
   printf("\nEntered Character is: %c", character);
 
   return 0;
}



เอาท์พุต


โค้ดด้านบนรับอินพุตสำหรับตัวแปรประเภท character, intege และ float โดยใช้ scanf แล้วส่งออกโดยใช้ printf() โดยใช้ตัวระบุรูปแบบที่เหมาะสม

จะรับอินพุตและเอาต์พุตของประเภทขั้นสูงใน C ได้อย่างไร


มีประเภทข้อมูลขั้นสูงหรือผู้ใช้กำหนดเองหลายประเภทใน C เช่น:

  1. String
  2. Structure

ในการรับอินพุตหรือจัดเตรียมเอาต์พุต เราจะใช้ฟังก์ชันอินพุตและเอาต์พุตเดียวกันกับ C ที่เราใช้สำหรับประเภทข้อมูลหลัก มาคุยกันว่าเราจะทำอย่างไร

1. String

String สตริงเป็นเพียงอาร์เรย์อักขระหนึ่งมิติที่มีอักขระบรรทัดสุดท้าย ‘\0’ ต่อท้าย ในสตริง อักขระทั้งหมดมีอยู่ในบล็อกหน่วยความจำที่อยู่ติดกัน และขนาดสูงสุดของสตริงถูกกำหนดไว้ล่วงหน้า

ไวยากรณ์เพื่อกำหนดสตริง

char new_string[size];

ในที่นี้ size คือจำนวนเต็มที่กำหนดไว้ล่วงหน้าซึ่งอ้างอิงถึงขนาดสูงสุดของสตริง มีสี่วิธีในการป้อนข้อมูลของสตริง:

  1. gets()

  • ฟังก์ชันนี้จะนำบรรทัดที่สมบูรณ์เป็นอินพุตจาก stdin และเก็บไว้ในสตริงที่กำหนด
  • ฟังก์ชัน gets() ถูกลบใน C11 ดังนั้นการใช้ฟังก์ชันนี้อาจทำให้เกิดข้อผิดพลาดบางอย่าง


ไวยากรณ์:

gets(new_string);


  1. fgets()
  • ฟังก์ชันนี้รับอินพุตจากสตรีมอักขระเฉพาะ เราส่งจำนวนอักขระสูงสุดที่จะใช้เป็นข้อมูลป้อนเข้า และตามนี้ เป็นไปได้สามกรณี:
    • 1. หากจำนวนอักขระในสตรีมเท่ากับหรือมากกว่าขนาดสูงสุดที่กำหนด จะใช้อักขระ n ตัวแรก (โดยที่ n คือขนาดสูงสุด)
    • 2. หากจำนวนอักขระในสตรีมน้อยกว่าขนาดที่กำหนด ระบบจะรับบรรทัดทั้งหมดเป็นอินพุต
    • 3. จะหยุดเมื่ออักขระขึ้นบรรทัดใหม่
  • เมื่อลบฟังก์ชัน gets() ฟังก์ชันนี้จึงเป็นทางเลือกหนึ่ง 

    ไวยากรณ์:

 fgets(new_string,size,stdin);


  1. scanf() โดยใช้ %[^\n]%*c เป็นตัวระบุการเข้าถึง
  • ฟังก์ชันนี้จะรับบรรทัดทั้งหมดเป็นอินพุต รวมถึงช่องว่าง
  • %[^\n]%*c แบ่งออกเป็นส่วนย่อย:
    • ในฟังก์ชัน scanf() เราสามารถใช้นิพจน์ทั่วไปเพื่อจำกัดอินพุตที่นี่ %[^\n] ใช้เพื่อรับอินพุตเท่านั้นจนกว่าจะไม่มีบรรทัดใหม่ปรากฏขึ้น
    • %c ใช้สำหรับป้อนอักขระ
    • “*” ใช้เพื่อแจ้งให้ฟังก์ชัน scanf() ไม่กำหนดอินพุตให้กับตัวแปรจนกว่าจะรับอินพุตทั้งหมด

ไวยากรณ์:

scanf("%[^\n]%*c",new_string);


  1. scanf() โดยใช้ %s เป็นตัวระบุการเข้าถึง
  • ฟังก์ชันนี้จะรับอินพุตจนถึงอักขระเว้นวรรคแรกเท่านั้น

ไวยากรณ์:

scanf("%s",new_string);


หมายเหตุ: ใน scanf() สำหรับสตริง เราไม่จำเป็นต้องใช้ “&” เนื่องจากชื่อของสตริงเป็นตัวชี้ไปยังตำแหน่งแรก และฟังก์ชันทั้งหมดที่กล่าวถึงข้างต้นมีอยู่ในไฟล์ส่วนหัว stdio.h

เราใช้ฟังก์ชัน printf() เพื่อพิมพ์สตริงโดยใช้ %s เป็นตัวระบุรูปแบบ 

ไวยากรณ์:

printf("%s",new_string);


ตัวอย่าง

#include <stdio.h>

int main() {
  // declaring maximum size of string
  int size = 50;

  // declaring the string 
  char new_string[size];

  // using gets function to take input
  gets(new_string);

  // using printf method to send output:
  printf("output 1: %s\n", new_string);

  // using gets function to take input
  fgets(new_string, size, stdin);

  // using printf method to send output:
  printf("output 2: %s\n", new_string);

  // using gets function to take input
  scanf("%[^\n]%*c", new_string);

  // using printf method to send output:
  printf("output 3: %s\n", new_string);

  // using gets function to take input 
  scanf("%s", new_string);

  // using printf method to send output:
  printf("output 4: %s\n", new_string);

  return 0;
}


For input:

input_1
input_2
input_3
input_4


Output:

output 1: input_1
output 2: input_2

output 3: input_3
output 4: input_4

ในโค้ดด้านบนนี้ เราจะรับอินพุตสำหรับสตริงโดยใช้วิธีการต่างๆ ตามที่กล่าวไว้ข้างต้น แล้วพิมพ์สตริงโดยใช้ printf()

2. Structure

Structure เป็นชนิดข้อมูลที่กำหนดโดยผู้ใช้ ซึ่งมักใช้เพื่อรวมประเภทข้อมูลต่างๆ เข้าด้วยกัน โครงสร้างประกอบด้วยสมาชิกข้อมูลต่างๆ และเมื่อเราเข้าถึงสมาชิกของข้อมูลโดยใช้ตัวดำเนินการจุด พวกมันจะทำงานเหมือนตัวแปรประเภทข้อมูลปกติ ดังนั้น กระบวนการอินพุต/เอาต์พุตสำหรับตัวแปรโครงสร้างจึงคล้ายกับตัวแปรประเภทข้อมูลอื่นๆ โดยใช้ฟังก์ชันอินพุตและเอาต์พุตที่กำหนดไว้ข้างต้นของ C มาดูตัวอย่างกันเพื่อความเข้าใจที่ดีขึ้น:

ตัวอย่าง:เราได้สร้างโครงสร้าง วัตถุของมัน จากนั้นด้วยความช่วยเหลือของสมาชิกข้อมูลโครงสร้างการเข้าถึง dot operator เพื่อรับอินพุตด้วยความช่วยเหลือของฟังก์ชัน scanf() ในที่สุด พิมพ์ทุกตัวแปรโดยเข้าถึงด้วยตัวดำเนินการจุดและพิมพ์ด้วยฟังก์ชัน printf() รหัสสำหรับสิ่งนี้ถูกกล่าวถึงด้านล่าง:

#include <stdio.h>

// structure consists of various type of data types
struct Person {
  char name[50]; // string data type
  int age; // int data type
  int house_number; // int data type
  float height; // float data type
};

int main() {
  // creating object of structure
  struct Person obj;

  // taking input for all data types 
  scanf("%s%d%d%f", obj.name, &obj.age, &obj.house_number, &obj.height);

  // printing all the data types
  printf("Name of the person is %s\n", obj.name);
  printf("Age of the person is %d\n", obj.age);
  printf("House Number of the person is %d\n", obj.house_number);
  printf("Height of the person is %f\n", obj.height);

  return 0;
}


ให้เราป้อนข้อมูลเป็น: Person_name 21 34 5.7

เอาท์พุท:



ฟังก์ชั่นในตัว (Built-in functions)


ในส่วนนี้เราจะมาดูฟังก์ชั่นอินพุตและเอาต์พุตในตัวในรายละเอียด C

scanf() และ printf()


ดังที่เราได้กล่าวไว้ข้างต้น scanf() และ printf() ใช้สำหรับวิธีการอินพุตและเอาต์พุตของภาษาการเขียนโปรแกรมของ c

ฟังก์ชัน scanf() ช่วยในการอ่านไฟล์หรืออินพุตที่เราจัดเตรียมไว้ และในฟังก์ชัน scanf() เราใช้ตัวระบุรูปแบบ เช่น %c, %d เป็นต้น เพื่อตรวจหาชนิดข้อมูลของตัวแปรที่เรากำหนดให้เป็นอินพุต ชนิดส่งคืนของ scanf() เป็นจำนวนเต็ม ฟังก์ชัน scanf() จะคืนค่าจำนวนตัวแปรทั้งหมดที่สแกนสำเร็จ หมายถึงจำนวนอินพุตทั้งหมด มีผลตอบแทนสามประเภทคือ –

  • มากกว่าศูนย์หากผ่านตัวแปรสำเร็จ
  • เท่ากับศูนย์หากไม่มีตัวแปรระบุ
  • น้อยกว่าศูนย์หากเกิดข้อผิดพลาดหรือ EOF (จุดสิ้นสุดไฟล์)

ไวยากรณ์

scanf(“%A”, &variableOfAType); 


ตัวอย่าง1

scanf("%d%c", &val1, &val2);  


ในตัวอย่างด้านล่าง เรากำลังสแกนตัวแปรสองตัวพร้อมกัน โดยที่ %d ถูกใช้สำหรับอันแรก val1 และ %c ถูกใช้สำหรับอีกอันหนึ่ง val2 ดังนั้นที่นี่ผลตอบแทนของมันจะเป็น 2 เพราะที่นี่มันสแกน 2 ตัวแปร หากคุณสังเกต คุณสามารถระบุชนิดข้อมูลของตัวแปรทั้งสองต่างกัน ตัวแรกเป็นจำนวนเต็ม และตัวที่สองเป็นอักขระ เราสามารถระบุได้อย่างง่ายดายด้วยความช่วยเหลือของตัวระบุรูปแบบ

// C program to show scanf() return type

#include <stdio.h>

int main() {
 int val1;
 char val2;
 int result;

 printf("Enter value of val1 and val2: ");
 result = scanf("%d %c", &val1, &val2);
 printf("Total inputs passed successfully are: %d\n", result);

 return 0;
}


เอาท์พุต


ฟังก์ชัน printf() ใช้สำหรับแสดงเอาต์พุตไปยังหน้าจอ และในฟังก์ชัน printf() เราใช้ตัวระบุรูปแบบ เช่น %c, %d ฯลฯ เพื่อตรวจจับชนิดข้อมูลของตัวแปรที่เรากำหนดให้เป็นอินพุต ชนิดส่งคืนของฟังก์ชัน printf เป็นจำนวนเต็ม ส่งคืนจำนวนอักขระทั้งหมดที่กำหนดเป็นเอาต์พุตโดย printf()

ไวยากรณ์

printf(“%A”, &variableOfAType);  

ตัวอย่างเช่น

printf("%d%c",val1,val2); 


ในตัวอย่างด้านล่าง เราพิมพ์ตัวแปร val1 และ val2 สองตัว แต่คุณสามารถเห็นประเภทข้อมูลของ val1 เป็นจำนวนเต็ม และ val2 เป็นอักขระ และในจำนวนเต็ม คุณสามารถป้อนอินพุต -2e31 ถึง 2e31-1 และในอักขระ คุณสามารถระบุอักขระได้เพียงตัวเดียวเท่านั้น ดังนั้นฟังก์ชัน printf() จะคืนค่าจำนวนอักขระทั้งหมดเป็น int บวกหนึ่งอักขระ และที่นี่เราไม่ได้ให้ช่องว่างหรือช่องว่างระหว่าง val1 และ val2 มิฉะนั้นจะถูกนับด้วย

// C program to show printf() return type

#include <stdio.h>

int main() {
 int result;
 int val1;
 char val2;
 printf("Enter value of val1 and val2: ");
 scanf("%d %c", &val1, &val2);
 result = printf("%d%c", val1, val2);
 printf("\nTotal printed characters are: %d\n", result);

 return 0;
}


เอาท์พุต


getchar() และ putchar()

ฟังก์ชัน putchar() เป็นฟังก์ชันของคอนโซลเอาต์พุตมาตรฐาน โดยจะแสดงเพียงอักขระเดียวในแต่ละครั้ง และอักขระเป็นประเภทของถ่านที่ไม่ได้ลงชื่อ (หมายความว่า char ใช้ทั้ง 8 บิตและไม่มีเครื่องหมายบิต) และอักขระที่ส่งผ่านไปยังฟังก์ชันนี้จะถูกส่งผ่านเป็นพารามิเตอร์ ประเภทการส่งคืนของฟังก์ชันนี้เป็น int และจะคืนค่า ASCII ของอักขระที่ส่งไป หากฟังก์ชันทำงานสำเร็จ จะคืนค่า ASCII ของอักขระที่ส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันนี้ และคืนค่า EOF หากเกิดข้อผิดพลาด

ไวยากรณ์

int putchar(int char)  


ตัวอย่าง 1

#include <stdio.h>
  
int main()
{
    char Character = 'A';
    putchar(Character);
 
    return (0);
}


เอาท์พุต


ตัวอย่าง 2

#include <stdio.h>
  
int main()
{
    char Character = 'A';
    for(char i = Character;i <= 'Z'; i++){
      putchar(i);  
    }
    
    return (0);
}


เอาท์พุต



ฟังก์ชัน getchar()เป็นฟังก์ชันของคอนโซลอินพุตมาตรฐาน ใช้อักขระตัวเดียวเป็นอินพุตในแต่ละครั้ง และไม่ใช้พารามิเตอร์ใดๆ ประเภทการส่งคืนของประเภทอักขระของถ่านที่ไม่ได้ลงชื่อซึ่งอ่านเป็นอินพุตและส่งคืน EOF (จุดสิ้นสุดของไฟล์) หากเกิดข้อผิดพลาด

ไวยากรณ์

int getchar (void);  
ch=getchar();


ตัวอย่าง

#include <stdio.h>      
void main()  
{  
    char c;   
    printf ("\n write a char: ");  
    c = getchar();   
    printf(" value of char which we take as input: ");  
    putchar(c);      
} 


เอาท์พุต


gets() และ puts()

ฟังก์ชันทำให้เป็นส่วนหนึ่งของเอาต์พุต และรับฟังก์ชันเป็นส่วนหนึ่งของอินพุต มีการประกาศในไฟล์ส่วนหัว stdio.h

ฟังก์ชัน puts()ใช้สำหรับพิมพ์/แสดงผลลัพธ์บนหน้าจอ แต่ที่นี่จะส่งผ่านตัวแปรเฉพาะในรูปแบบของเส้นหรือสตริงเท่านั้น จะพิมพ์สตริงที่ส่งผ่านในบรรทัดใหม่และประเภทการส่งคืนเป็นจำนวนเต็ม มันให้ผลตอบแทนเพียงสองประเภทเท่านั้นคือ-

  • จำนวนอักขระที่พิมพ์ไปยังคอนโซลหากดำเนินการสำเร็จ
  • ข้อผิดพลาดหรือ EOF (จุดสิ้นสุดของไฟล์)

ไวยากรณ์

int puts(const char* str); 


ตัวอย่าง

#include<stdio.h>
int main()
{
    char string[] = "Hello world!";
     
    int val = puts(string);
    printf("Returned Value Val = %d", val);
     
    return 0;
}


เอาท์พุต


ฟังก์ชัน get() ใช้สำหรับวิธีการป้อนข้อมูล มันอ่านบรรทัดและเก็บไว้ในอาร์เรย์อักขระ เนื่องจากฟังก์ชันนี้ เราสามารถรับอินพุตของสตริง ตามด้วย enter หรือเว้นวรรคเป็นอินพุต

ชนิดส่งคืนของฟังก์ชันนี้คือสตริง จะส่งคืนสตริง (ซึ่งส่งผ่านเป็นพารามิเตอร์ในฟังก์ชัน gets()) เมื่อดำเนินการสำเร็จและส่งคืน EOD (จุดสิ้นสุดของไฟล์) หากมีข้อผิดพลาดเกิดขึ้น ไวยากรณ์

char *gets(char *str);  


ตัวอย่าง

#include <stdio.h>

int main () {
   char string[50];

   printf("Enter a string : ");
   gets(string);

   printf("You entered: ");
   puts(string);
    
   return(0);
}


เอาท์พุต



fprintf()

ฟังก์ชัน fprintf() ใช้สำหรับพิมพ์เอาต์พุตในไฟล์แทนหน้าจอเอาต์พุตมาตรฐาน

ไวยากรณ์

int fprintf(FILE *stream, const char *format, [arguments ...]);  


ในไวยากรณ์ข้างต้น stream แสดงถึงไฟล์ที่เราต้องพิมพ์ผลลัพธ์ format คือสตริง ซึ่งโดยพื้นฐานแล้วเป็นผลลัพธ์ของเรา และอาจฝังโดยแท็กรูปแบบบางแท็กซึ่งจะถูกแทนที่ด้วยค่าที่ส่งผ่านเป็นอาร์กิวเมนต์

มาดูตัวอย่างเพื่อความเข้าใจมากขึ้น:

// C program to show fprintf()
  
#include<stdio.h>
int main()
{

	char str[50];

	//create file 
	FILE *fptr = fopen("example.txt", "w");
	if (fptr == NULL)
	{
		printf("Could not open file");
		return 0;
	}
	
	puts("Enter string");
	scanf("%[^\n]%*c", str);
	fprintf(fptr,"%s\n", str);
	fclose(fptr);

	return 0;
}


เอาท์พุต


example.txt


ในโค้ดด้านบนนี้ เราได้สร้างไฟล์และนำสตริงมาเป็นอินพุต จากนั้นเราเขียนอินพุตที่รับไปยังไฟล์โดยใช้ฟังก์ชัน fprintf()

putch() & getche()

ฟังก์ชั่น putch()ถูกประกาศในไฟล์ส่วนหัว conio.h ใช้สำหรับพิมพ์อักขระตัวเดียวบนหน้าจอ และอักขระนั้นเป็นประเภทตัวอักษรและตัวเลข (ค่าอาจเป็นตัวอักษรหรือตัวเลข)

มีการประกาศฟังก์ชัน getche() ในไฟล์ส่วนหัว conio.h มันถูกใช้เพื่อดึงอักขระจากคีย์บอร์ดอินพุตมาตรฐาน และหลังจากรับอินพุตแล้ว มันจะพิมพ์เอาต์พุตบนหน้าจอเอาต์พุตทันที เราไม่จำเป็นต้องกด Enter เพื่อให้คำสั่งสำหรับเอาต์พุต

ไวยากรณ์

putch(ch);  
ch=getche();  


ตัวระบุรูปแบบสำหรับ อินพุต/เอาต์พุต

ตัวระบุรูปแบบใช้เพื่อกำหนดชนิดข้อมูลของตัวแปรในฟังก์ชันอินพุตและเอาต์พุตใน C ช่วยให้คอมไพเลอร์ระบุประเภทข้อมูลของตัวแปรได้ มันถูกใช้ภายในฟังก์ชัน scanf() สำหรับการป้อนข้อมูล และภายในฟังก์ชัน prinf() สำหรับการแสดงผลลัพธ์ รวมเรามีตัวระบุรูปแบบแปดตัวใน C

Data typeFormat specifiersDescription
int%duse for decimal integer value
%uuse for unsigned integer value
%ouse for unsigned octal value
%xuse for unsigned hexadecimal value
long int%lduse for long int value
double%fuse for double value
%lfuse for long double value
float%fuse for floating point value
%euse for floating point value in decimal or exponential form.
char%cuse for single character value
%suse for string of value of character


บทสรุป

  • อินพุตหมายถึงกระบวนการป้อนข้อมูลลงในโปรแกรมและเอาต์พุตหมายถึงกระบวนการส่งข้อมูลออกจากโปรแกรม
  • ไลบรารีอินพุต/เอาท์พุตมาตรฐานรวมอยู่ในโปรแกรมโดยใช้ไฟล์ส่วนหัว stdio.h ซึ่งประกอบด้วยฟังก์ชันอินพุตและเอาต์พุตหลักใน C scanf() และ printf( )
  • สตรีมในการเขียนโปรแกรม C จะใช้เพื่อรับอินพุตหรือเอาต์พุตเพื่อขจัดความกังวลเกี่ยวกับตำแหน่งเริ่มต้นหรือปลายทางสุดท้ายของข้อมูล

credit : https://www.scaler.com/topics/c/

Leave a Reply

Your email address will not be published. Required fields are marked *