<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>Hàm scanf&#40;&#41; trong C</title>
<meta name="description" content="Hàm scanf&#40;&#41; trong C - Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;ham-scanf-trong-c-9887.html">
<meta name="author" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :.">
<meta name="copyright" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :. [admin@nguoicodonvn2008.info]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Hàm scanf&#40;&#41; trong C">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;ham-scanf-trong-c-9887.html">
<meta property="og:site_name" content=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.">
<meta property="og:url" content="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/ham-scanf-trong-c-9887.html">
<link rel="shortcut icon" href="https://nguoicodonvn2008.info/favicon.ico">
<link rel="canonical" href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/ham-scanf-trong-c-9887.html">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/karaoke-dual/" title="Tin Tức - Karaoke Dual" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/nhac-tre/" title="Tin Tức - Nhạc trẻ" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tru-tinh/" title="Tin Tức - Trữ tình" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/nuoc-ngoai/" title="Tin Tức - Nước ngoài" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/remix/" title="Tin Tức - Remix" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tam-su-tinh-yeu/" title="Tin Tức - Tâm sự tình yêu" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tho-suu-tam/" title="Tin Tức - Thơ sưu tầm" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/cuoc-song/" title="Tin Tức - Cuộc sống" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/phan-mem/" title="Tin Tức - Phần mềm" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/kien-thuc-may-tinh/" title="Tin Tức - Kiến thức máy tính" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/hoc-tap/" title="Tin Tức - Học tập" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tai-lieu/" title="Tin Tức - Tài liệu" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/de-thi/" title="Tin Tức - Đề thi" type="application/rss+xml">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/style.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/bootstrap.min.js" type="text/javascript">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/style.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://nguoicodonvn2008.info/themes/default/css/news.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/custom.css">
<style type="text/css">
	body{background: #fff;}
</style>
    </head>
    <body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">.&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.</h2>
		<p class="pull-right"><a title=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;." href="https://nguoicodonvn2008.info/">https://nguoicodonvn2008.info</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Hàm scanf&#40;&#41; trong C</h1>
		<ul class="list-inline">
			<li>Thứ tư - 26/02/2025 21:57</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
		</div>
				<div class="imghome">
			<img alt="Hàm scanf&#40;&#41; trong C" src="https://st.quantrimang.com/photos/image/2018/08/29/ham-scanf-trong-c-1.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<p style="text-align: justify;"><strong>Hàm scanf() là gì trong C? Cách sử dung hàm scanf() của C như thế nào?</strong>&nbsp;Hãy cùng nhau tìm hiểu nhé!</p>

<p style="text-align: justify;">Lập trình hiện đang là một trong số ngành được săn đón nhất hiện nay. Trong thời đại sự phát triển của công nghệ vô cùng quan trọng, có lẽ đây là ngành không sợ thất nghiệp nhất. Và nếu học lập trình, C thường là lựa chọn nhiều người ưu tiên hướng tới.</p>

<p style="text-align: justify;">Hàm scanf() là một hàm nhập liệu thường được sử dụng trong ngôn ngữ lập trình C. Hàm này cho phép bạn đọc dữ liệu nhập từ người dùng hoặc từ một tệp và lưu trữ dữ liệu nhập đó trong các biến có nhiều kiểu dữ liệu khác nhau.</p>

<p style="text-align: justify;">Dữ liệu nhập là một phần thiết yếu của hầu hết các chương trình và hàm scanf() cung cấp một cách dễ dàng để đọc dữ liệu nhập ở nhiều định dạng khác nhau. Nhưng điều quan trọng là phải sử dụng scanf() một cách cẩn thận và luôn xác thực dữ liệu nhập của người dùng để ngăn chặn các lỗ hổng bảo mật và hành vi chương trình không mong muốn.</p>

<p style="text-align: justify;">Ở bài viết này, hãy cùng nhau xem xét kỹ hơn hàm scanf() và cách sử dụng nó hiệu quả trong lập trình C nhé!</p>

<p style="text-align: justify;">Hàm&nbsp;<strong>scanf không chấp nhận khoảng trống</strong>&nbsp;giữa hai chuỗi (khác với hàm gets()), tức là bạn chỉ có thể nhập một chuỗi liền nhau, nếu bạn nhập cả phần khoảng trống thì phần nội dung sau khoảng trống đầu tiên sẽ không được chấp nhận.</p>

<h2 style="text-align: justify;">Khai báo hàm scanf() trong C</h2>

<p style="text-align: justify;">Dưới đây là phần khai báo cho hàm scanf() trong C:</p>

<pre id="pre0" style="text-align: justify;">
int scanf(const char *format, ...)</pre>

<p style="text-align: justify;"><strong>Tham số</strong></p>

<p style="text-align: justify;"><strong>format</strong>&nbsp;-- Đây là chuỗi chứa một trong các item sau:</p>

<p style="text-align: justify;">Ký tự Whitespace, ký tự<strong>&nbsp;Non-whitespace&nbsp;</strong>và<strong>&nbsp;Format specifier</strong>. Một format specifier sẽ là dạng&nbsp;<strong>&#91;=%&#91;*&#93;&#91;width&#93;&#91;modifiers&#93;type=&#93;</strong>, được giải thích như sau:</p>

<table border="2">
	<tbody>
		<tr>
			<th style="text-align: justify;">Tham số</th>
			<th style="text-align: justify;">Miêu tả</th>
		</tr>
		<tr>
			<td style="text-align: justify;">*</td>
			<td style="text-align: justify;">Đây là một dấu hoa thị bắt đầu (tùy ý) để chỉ rằng dữ liệu là được đọc từ Stream nhưng bị bỏ qua, ví dụ: nó không được lưu trữ trong tham số tương ứng</td>
		</tr>
		<tr>
			<td style="text-align: justify;">width</td>
			<td style="text-align: justify;">Xác định số ký tự tối đa được đọc trong hoạt động đọc hiện tại</td>
		</tr>
		<tr>
			<td style="text-align: justify;">modifiers</td>
			<td style="text-align: justify;">Xác định một kích cỡ khác với int (trong trường hợp d, I và n), unsigned int (trong trường hợp o,u và x) hoặc float (trong trường hợp e, f và g) cho dữ liệu được trỏ bởi tham số bổ sung tương ứng: h cho short int (cho d, i và n), hoặc unsigned short int (cho o, u và x); l cho long int (cho d, i và n), hoặc unsigned long int (cho o, u và x), hoặc double (cho e, f và g); L cho long double (cho e, f và g)</td>
		</tr>
		<tr>
			<td style="text-align: justify;">type</td>
			<td style="text-align: justify;">Một ký tự xác định kiểu dữ liệu được đọc và cách nó được mong đợi được đọc. Bạn theo dõi bảng tiếp theo</td>
		</tr>
	</tbody>
</table>

<h3 style="text-align: justify;">Type specifier cho hàm fscanf</h3>

<table border="2">
	<tbody>
		<tr>
			<th style="text-align: justify;">Kiểu</th>
			<th style="text-align: justify;">Input</th>
			<th style="text-align: justify;">Kiểu tham số</th>
		</tr>
		<tr>
			<td style="text-align: justify;">c</td>
			<td style="text-align: justify;">Ký tự đơn: Đọc ký tự kế tiếp. Nếu một độ rộng khác 1 được xác định, thì hàm này đọc độ rộng các ký tự và lưu trữ chúng trong các vị trí liên tiếp nhau của mảng đã được truyền như là tham số. Không có ký tự null nào được phụ thêm vào cuối</td>
			<td style="text-align: justify;">char *</td>
		</tr>
		<tr>
			<td style="text-align: justify;">d</td>
			<td style="text-align: justify;">Số nguyên hệ thập phân: Số này tùy ý được đặt trước bởi một dấu + hoặc -</td>
			<td style="text-align: justify;">int *</td>
		</tr>
		<tr>
			<td style="text-align: justify;">e, E, f, g, G</td>
			<td style="text-align: justify;">Số thực dấu chấm động: Số thập phân chứa một dấu thập phân, được đặt trước tùy ý bởi một dấu + hoặc – và được theo sau tùy ý bởi ký tự e hoặc E và một số thập phân. Hai ví dụ hợp lệ là -732.103 và 7.12e4</td>
			<td style="text-align: justify;">float *</td>
		</tr>
		<tr>
			<td style="text-align: justify;">o</td>
			<td style="text-align: justify;">Số nguyên hệ bát phân</td>
			<td style="text-align: justify;">int *</td>
		</tr>
		<tr>
			<td style="text-align: justify;">s</td>
			<td style="text-align: justify;">Chuỗi ký tự. Nó sẽ đọc các ký tự liên tiếp nhau tới khi tìm thấy một whitespace (có thể là blank, newline (dòng mới) và tab)</td>
			<td style="text-align: justify;">char *</td>
		</tr>
		<tr>
			<td style="text-align: justify;">u</td>
			<td style="text-align: justify;">Số nguyên hệ thập phân không dấu</td>
			<td style="text-align: justify;">unsigned int *</td>
		</tr>
		<tr>
			<td style="text-align: justify;">x, X</td>
			<td style="text-align: justify;">Số nguyên hệ thập lục phân</td>
			<td style="text-align: justify;">int *</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;"><strong>Các tham số bổ sung</strong>&nbsp;-- Phụ thuộc vào chuỗi định dạng format, hàm này có thể có một dãy tham số bổ sung, mỗi tham số chứa một giá trị để được chèn thay cho mỗi %-tag được xác định trong tham số format, nếu có. Số tham số này nên cùng số lượng với số %-tags mà mong chờ một giá trị.</p>

<p style="text-align: justify;"><strong>Trả về giá trị</strong></p>

<p style="text-align: justify;">Nếu thành công, tổng số ký tự đã được ghi sẽ được trả về, nếu thất bại thì trả về một số âm.</p>

<p style="text-align: justify;"><strong>Ví dụ</strong></p>

<p style="text-align: justify;">Trong ví dụ sau, mình có nhập khoảng trống trong phần số điện thoại và ngày sinh, và bạn theo dõi phần hiển thị kết quả để thấy rằng lệnh&nbsp;<strong>scanf</strong>&nbsp;không chấp nhận khoảng trống.</p>

<p style="text-align: justify;">Chương trình C sau minh họa cách sử dụng của hàm scanf() trong C:</p>

<pre id="pre1" style="text-align: justify;">
#include &lt;stdio.h&gt;

int main()
{
   char str1&#91;20&#93;, str2&#91;30&#93;;

   printf(&quot;Nhap ten: &quot;);
   scanf(&quot;%s&quot;, &amp;str1);

   printf(&quot;Nhap so dien thoai va ngay sinh: &quot;);
   scanf(&quot;%s&quot;, &amp;str2);

   printf(&quot;Ten vua nhap: %s\n&quot;, str1);
   printf(&quot;So dien thoai va ngay sinh vua nhap: %s&quot;, str2);
   return(0);
}</pre>

<p style="text-align: justify;">Biên dịch và chạy chương trình C trên sẽ cho kết quả:</p>

<p style="text-align: justify;"><img alt="Biên dịch và chạy chương trình C để xem kết quả " data-i="0" data-src="https://st.quantrimang.com/photos/image/2018/08/29/ham-scanf-trong-c-1.jpg" data-was-processed="true" height="66" src="https://st.quantrimang.com/photos/image/2018/08/29/ham-scanf-trong-c-1.jpg" width="479" /></p>

<h2 style="text-align: justify;">Sự khác biệt giữa scanf() và fscanf() trong C</h2>

<p style="text-align: justify;"><strong>Scanf()</strong></p>

<ul>
	<li style="text-align: justify;">Được dùng để đọc đầu vào chuẩn.</li>
	<li style="text-align: justify;">Cú pháp cơ bản:<code>&nbsp;scanf(const char *format, …)</code>.</li>
	<li style="text-align: justify;">Nó cần công cụ xác định Format để lấy dữ liệu nhập vào của một kiểu cụ thể.</li>
	<li style="text-align: justify;">Nó tính 3 tham số: Ký tự khoảng trắng, không phải khoảng trắng, trình xác định định dạng.</li>
</ul>

<p style="text-align: justify;"><strong>Fscanf()</strong></p>

<ul>
	<li style="text-align: justify;">Hàm này được dùng để đọc dữ liệu nhập vào từ một file.</li>
	<li style="text-align: justify;">Cú pháp:&nbsp;<code>fscanf(FILE *stream, const char *format, …)</code>.</li>
	<li style="text-align: justify;">Nó đọc stream ở dạng byte.</li>
	<li style="text-align: justify;">Nó được định nghĩa trong file header:&nbsp;<code>#include &lt;stdio.h&gt;</code>.</li>
</ul>

<div style="text-align: justify;">&nbsp;</div>
		</div>
				<div id="author">
						<p>
				<strong>Nguồn tin:</strong>
				Quantrimang.com:
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/ham-scanf-trong-c-9887.html" title="Hàm scanf&#40;&#41; trong C">https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/ham-scanf-trong-c-9887.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; .&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.
		</div>
		<div id="contact">
			<a href="mailto:admin@nguoicodonvn2008.info">admin@nguoicodonvn2008.info</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://nguoicodonvn2008.info/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
		</script>
		<div class="car-top">
  <span><img src="https://nguoicodonvn2008.info/themes/default/images/car.png" alt=""></span>
</div>
<script src="https://nguoicodonvn2008.info/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_e856T",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://nguoicodonvn2008.info/assets/js/language/vi.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/global.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/site.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/news.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/main.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/custom.js"></script>
<script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "Organization",
            "url": "https://nguoicodonvn2008.info",
            "logo": "https://nguoicodonvn2008.info/uploads/angel.gif"
        }
        </script>
<script src="https://nguoicodonvn2008.info/themes/default/js/bootstrap.min.js"></script>
<script type="text/javascript">
var $scrolltop = $('.car-top');
$scrolltop.on('click', function () {
    $('html,body').animate({
        scrollTop: 0
    }, 800);
    $(this).addClass("car-run");
    setTimeout(function(){ $scrolltop.removeClass('car-run');}, 1000);
    return false;
});
$(window).on('scroll', function ()
{ 
    if($(window).scrollTop() >= 200)
    {
        $scrolltop.addClass("show");
        $scrolltop.addClass("car-down");
    }
    else
    {
       $scrolltop.removeClass("show");
       setTimeout(function(){ $scrolltop.removeClass('car-down');}, 300);
    }
});
</script>
</body>
</html>