<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentários sobre: Cuidados com a família de funções scanf()</title>
	<atom:link href="http://sergioprado.org/cuidados-com-a-familia-de-funcoes-scanf/feed/" rel="self" type="application/rss+xml" />
	<link>http://sergioprado.org/cuidados-com-a-familia-de-funcoes-scanf/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cuidados-com-a-familia-de-funcoes-scanf</link>
	<description>Sistemas embarcados, Linux embarcado, RTOS e segurança</description>
	<lastBuildDate>Thu, 17 May 2012 14:50:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<item>
		<title>Por: Cassio</title>
		<link>http://sergioprado.org/cuidados-com-a-familia-de-funcoes-scanf/#comment-165</link>
		<dc:creator>Cassio</dc:creator>
		<pubDate>Fri, 26 Aug 2011 17:56:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.sergioprado.org/?p=642#comment-165</guid>
		<description>Muito Bom!!! Parab&#233;ns!</description>
		<content:encoded><![CDATA[<p>Muito Bom!!! Parabéns!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: sergioprado</title>
		<link>http://sergioprado.org/cuidados-com-a-familia-de-funcoes-scanf/#comment-164</link>
		<dc:creator>sergioprado</dc:creator>
		<pubDate>Tue, 21 Dec 2010 15:26:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.sergioprado.org/?p=642#comment-164</guid>
		<description>Olá Francis,

Com um pouco de esforço, acredito que seja possível implementar, mas eu buscaria uma solução usando regex (http://www.gnu.org/software/libtool/manual/libc/Regular-Expressions.html).

Um abraço!</description>
		<content:encoded><![CDATA[<p>Olá Francis,</p>
<p>Com um pouco de esforço, acredito que seja possível implementar, mas eu buscaria uma solução usando regex (<a href="http://www.gnu.org/software/libtool/manual/libc/Regular-Expressions.html" rel="nofollow">http://www.gnu.org/software/libtool/manual/libc/Regular-Expressions.html</a>).</p>
<p>Um abraço!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Francis David</title>
		<link>http://sergioprado.org/cuidados-com-a-familia-de-funcoes-scanf/#comment-163</link>
		<dc:creator>Francis David</dc:creator>
		<pubDate>Tue, 21 Dec 2010 10:53:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.sergioprado.org/?p=642#comment-163</guid>
		<description>Posso usar o scanf para retornar, por exemplo, o e-mail de uma string, sem saber exatamente sua posicao ?
e.g: &quot;inicio da string asdf gfd ert teset@dd.com masis oiiuytrrwe ddff outro@hotmail.com.br final da string&quot;</description>
		<content:encoded><![CDATA[<p>Posso usar o scanf para retornar, por exemplo, o e-mail de uma string, sem saber exatamente sua posicao ?<br />
e.g: “inicio da string asdf gfd ert <a href="mailto:teset@dd.com">teset@dd.com</a> masis oiiuytrrwe ddff <a href="mailto:outro@hotmail.com.br">outro@hotmail.com.br</a> final da string”</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: sergioprado</title>
		<link>http://sergioprado.org/cuidados-com-a-familia-de-funcoes-scanf/#comment-162</link>
		<dc:creator>sergioprado</dc:creator>
		<pubDate>Wed, 30 Jun 2010 13:27:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.sergioprado.org/?p=642#comment-162</guid>
		<description>É verdade Erick.

Obrigado por complementar o artigo!

Um abraço,

Sergio Prado</description>
		<content:encoded><![CDATA[<p>É verdade Erick.</p>
<p>Obrigado por complementar o artigo!</p>
<p>Um abraço,</p>
<p>Sergio Prado</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Erick Nogueira do Nascimento</title>
		<link>http://sergioprado.org/cuidados-com-a-familia-de-funcoes-scanf/#comment-161</link>
		<dc:creator>Erick Nogueira do Nascimento</dc:creator>
		<pubDate>Wed, 30 Jun 2010 03:04:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.sergioprado.org/?p=642#comment-161</guid>
		<description>S&#233;rgio,

	As fun&#231;&#245;es da fam&#237;lia scanf retornam o n&#250;mero de matches (casamentos) bem sucedidos entre os campos na string de formata&#231;&#227;o e o que foi encontrado na string de entrada, ou seja, retornam o n&#250;mero de atribui&#231;&#245;es bem sucedidas (veja, por exemplo: http://www.gnu.org/s/libc/manual/html_node/Formatted-Input-Functions.html#Formatted-Input-Functions).
	Com isso, para verificar se a string de entrada satisfaz a string de formata&#231;&#227;o, &#233; s&#243; fazer o seguinte no seu exemplo:

	int r;

	if ((r = sscanf(dither, &quot;%02d%02d%04d%02d%02d%02d%s&quot;,
	&#160;&#160;&#160; &amp;dia, &amp;mes, &amp;ano, &amp;hora, &amp;min, &amp;seg, iaSemana) != 7)
	&#160;&#160; {
	&#160;&#160;&#160;&#160;&#160; // Ocorreu algum erro
	&#160;&#160;&#160;&#160;&#160; if (r == EOF) {
	&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // a string de entrada terminou antes de casar todos os campos
	&#160;&#160;&#160;&#160;&#160; } else {
	&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Nao conseguiu casar algum campo
	&#160;&#160;&#160;&#160;&#160; }
	&#160;&#160; }

	Para especificar o n&#250;mero m&#225;ximo de caracteres que podem ser lidos em um buffer, &#233; s&#243; utilizar o par&#226;metro width (largura) do &quot;%s&quot;, da mesma forma que voc&#234; fez em &quot;%02d&quot;, no seu exemplo, ficaria &quot;%15s&quot;. Mais detalhes em http://www.gnu.org/s/libc/manual/html_node/String-Input-Conversions.html#String-Input-Conversions

	Abra&#231;o.</description>
		<content:encoded><![CDATA[<p>Sérgio,</p>
<p>	As funções da família scanf retornam o número de matches (casamentos) bem sucedidos entre os campos na string de formatação e o que foi encontrado na string de entrada, ou seja, retornam o número de atribuições bem sucedidas (veja, por exemplo: <a href="http://www.gnu.org/s/libc/manual/html_node/Formatted-Input-Functions.html#Formatted-Input-Functions" rel="nofollow">http://www.gnu.org/s/libc/manual/html_node/Formatted-Input-Functions.html#Formatted-Input-Functions</a>).<br />
	Com isso, para verificar se a string de entrada satisfaz a string de formatação, é só fazer o seguinte no seu exemplo:</p>
<p>	int r;</p>
<p>	if ((r = sscanf(dither, “%02d%02d%04d%02d%02d%02d%s”,<br />
	    &amp;dia, &amp;mes, &amp;ano, &amp;hora, &amp;min, &amp;seg, iaSemana) != 7)<br />
	   {<br />
	      // Ocorreu algum erro<br />
	      if (r == EOF) {<br />
	         // a string de entrada terminou antes de casar todos os campos<br />
	      } else {<br />
	         // Nao conseguiu casar algum campo<br />
	      }<br />
	   }</p>
<p>	Para especificar o número máximo de caracteres que podem ser lidos em um buffer, é só utilizar o parâmetro width (largura) do “%s”, da mesma forma que você fez em “%02d”, no seu exemplo, ficaria “%15s”. Mais detalhes em <a href="http://www.gnu.org/s/libc/manual/html_node/String-Input-Conversions.html#String-Input-Conversions" rel="nofollow">http://www.gnu.org/s/libc/manual/html_node/String-Input-Conversions.html#String-Input-Conversions</a></p>
<p>	Abraço.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

