Learn how to take string input from the user and display it using C/C++ programming.
To write a C/C++ program that takes the name of a school as input from the user and then displays it on the screen.
In this practical, you will learn how to take string input from the user in C. Strings are sequences of characters stored in character arrays. You will use:
Note: scanf() with %s only reads words without spaces. To read full sentences with spaces, you need gets() or fgets().
scanf("%[^\n]", school); to read a string with spaces, or use gets() (though it is unsafe and deprecated in modern C).
Run the program:
Sample Input & Output:
| Method | Code | Reads Spaces? | Notes |
|---|---|---|---|
| scanf() | scanf("%s", school); |
❌ No | Only reads until space |
| scanf() with [^\n] | scanf(" %[^\n]", school); |
✅ Yes | Reads until newline (recommended) |
| gets() | gets(school); |
✅ Yes | Unsafe, deprecated |
| fgets() | fgets(school, 100, stdin); |
✅ Yes | Safe, includes newline |
%[^\n] format specifier reads the entire line including spaces.fgets() is safer and recommended for modern C programming.You have successfully written a C program that takes the name of a school as input from the user and displays it on the screen. You have learned how to:
%[^\n]printf()fgets()%[^\n] reads everything until a newline character. The space before %[^\n] (" %[^\n]") consumes any leftover newline from previous input.
fgets() instead of gets(). gets() is deprecated and unsafe because it does not check buffer size.
ایک C/C++ پروگرام لکھنا جو صارف سے سکول کا نام ان پٹ کے طور پر لے اور اسے اسکرین پر ظاہر کرے۔
اس عملی میں، آپ C میں صارف سے سٹرنگ ان پٹ لینا سیکھیں گے۔ سٹرنگز کریکٹر اریز میں محفوظ کردہ حروف کا ایک سلسلہ ہے۔ آپ استعمال کریں گے:
نوٹ: %s کے ساتھ scanf() صرف خالی جگہ کے بغیر الفاظ پڑھتا ہے۔ خالی جگہوں کے ساتھ پورے جملے پڑھنے کے لیے gets() یا fgets() کی ضرورت ہے۔
scanf("%[^\n]", school); استعمال کریں، یا gets() استعمال کریں (حالانکہ یہ جدید C میں غیر محفوظ اور متروک ہے)۔
پروگرام چلائیں:
نمونہ ان پٹ اور آؤٹ پٹ:
| طریقہ | کوڈ | خالی جگہیں پڑھتا ہے؟ | نوٹس |
|---|---|---|---|
| scanf() | scanf("%s", school); |
❌ نہیں | صرف خالی جگہ تک پڑھتا ہے |
| scanf() [^\n] کے ساتھ | scanf(" %[^\n]", school); |
✅ ہاں | نئی لائن تک پڑھتا ہے (تجویز کردہ) |
| gets() | gets(school); |
✅ ہاں | غیر محفوظ، متروک |
| fgets() | fgets(school, 100, stdin); |
✅ ہاں | محفوظ، نئی لائن شامل کرتا ہے |
%[^\n] فارمیٹ اسپیسیفائر خالی جگہوں سمیت پوری لائن پڑھتا ہے۔fgets() کا استعمال زیادہ محفوظ اور تجویز کردہ ہے۔آپ نے کامیابی سے ایک C پروگرام لکھا ہے جو صارف سے سکول کا نام ان پٹ کے طور پر لیتا ہے اور اسے اسکرین پر ظاہر کرتا ہے۔ آپ نے سیکھ لیا ہے:
%[^\n] کا استعمال کرتے ہوئے خالی جگہوں کے ساتھ سٹرنگ ان پٹ پڑھناprintf() کا استعمال کرتے ہوئے سٹرنگز ظاہر کرناfgets() جیسے محفوظ متبادل طریقے استعمال کرنا%[^\n] نئی لائن کریکٹر تک سب کچھ پڑھتا ہے۔ %[^\n] سے پہلے کی خالی جگہ (" %[^\n]") پچھلے ان پٹ سے بچی ہوئی نئی لائن کو ہٹا دیتی ہے۔
gets() کے بجائے fgets() استعمال کریں۔ gets() متروک اور غیر محفوظ ہے کیونکہ یہ بفر سائز کو چیک نہیں کرتا۔