<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>4 on Sobamemil</title>
    <link>https://blog.sobamemil.com/tags/4/</link>
    <description>Recent content in 4 on Sobamemil</description>
    <generator>Hugo</generator>
    <language>ko</language>
    <lastBuildDate>Thu, 19 Dec 2019 12:41:48 +0900</lastBuildDate>
    <atom:link href="https://blog.sobamemil.com/tags/4/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>시스템 프로그래밍 프로젝트 #4</title>
      <link>https://blog.sobamemil.com/posts/019-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-4/</link>
      <pubDate>Thu, 19 Dec 2019 12:41:48 +0900</pubDate>
      <guid>https://blog.sobamemil.com/posts/019-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-4/</guid>
      <description>&lt;p&gt;&lt;strong&gt;문제 :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://img.sobamemil.com/posts/19/img_1.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;입력 파일 :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[numb.txt&lt;/p&gt;
&lt;p&gt;0.00MB](&lt;a href=&#34;https://blog.kakaocdn.net/dna/EqJyk/btqA57RastK/AAAAAAAAAAAAAAAAAAAAAMzaoxsjOizEuGCR5qF4Fzsa0iAquIjz6f_89H3gPle-/numb.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1788188399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=wyxmqU%2F2ZPAkscVFgGfrU1oKVrU%3D&amp;amp;attach=1&amp;amp;knm=tfile.txt&#34;&gt;https://blog.kakaocdn.net/dna/EqJyk/btqA57RastK/AAAAAAAAAAAAAAAAAAAAAMzaoxsjOizEuGCR5qF4Fzsa0iAquIjz6f_89H3gPle-/numb.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1788188399&amp;allow_ip=&amp;allow_referer=&amp;signature=wyxmqU%2F2ZPAkscVFgGfrU1oKVrU%3D&amp;attach=1&amp;knm=tfile.txt&lt;/a&gt;)
&lt;img loading=&#34;lazy&#34; src=&#34;https://img.sobamemil.com/posts/19/img_2.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;실행 결과 :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://img.sobamemil.com/posts/19/img_3.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;소스 코드 :&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95&lt;/td&gt;
          &lt;td&gt;#include&amp;lt;stdio.h&amp;gt;  #include&amp;lt;string.h&amp;gt;  #include&amp;lt;stdlib.h&amp;gt;  #include&amp;lt;math.h&amp;gt;    void get_token_num(char *bp);  void hextodec(char *test, int len); // hex to decimal function  void atohex(char *ascii, int len); // ascii to hex function  int sum = 0;  int cnt = 0;    int main() {  FILE *fp = NULL;  char buf[80];  if((fp = fopen(&amp;ldquo;numb.s&amp;rdquo;, &amp;ldquo;r&amp;rdquo;))==NULL) {  printf(&amp;ldquo;file not found&amp;hellip;\n&amp;rdquo;); exit(1);  }  while(fgets(buf, sizeof(buf), fp) != NULL) {  get_token_num(buf);  }  fclose(fp);  printf(&amp;quot;\nsum = %d\n&amp;quot;, sum);  return 0;  }  void get_token_num(char *bp){  int i,len;  char test[10];  char* result = strtok(bp,&amp;quot; \t\n&amp;quot;); // 문자열 자르기  while(result!=NULL) {       // 자른 token이 NULL 일떄까지 loop  if(result[0] == &amp;lsquo;X&amp;rsquo;){ // 자른 token 의 원소가 &amp;lsquo;X&amp;rsquo; 이면 hexadecimal  for(i=2; i&amp;lt;=strlen(result)-2; i++){ // 처리할 부분만 잘라냄  test[i-2] = result[i];  cnt++;  }  printf(&amp;ldquo;token : %s\t&amp;rdquo;,result);  printf(&amp;quot;\t\t&amp;quot;);  hextodec(test, cnt);  cnt=0;  }  else if(result[0] == &amp;lsquo;C&amp;rsquo;){ // 자른 token의 첫 원소가 &amp;lsquo;C&amp;rsquo; 이면 ASCII  printf(&amp;ldquo;token : %s\t&amp;rdquo;,result);  for(i=2; i&amp;lt;=strlen(result)-2; i++){ // 처리할 부분만 잘라냄  test[i-2] = result[i];  cnt++;  }  test[cnt] = &amp;lsquo;\0&amp;rsquo;;  atohex(test, cnt);  cnt=0;  }  else { // 자른 token이 문자열 상수이면 decimal  printf(&amp;ldquo;token : %s\t&amp;rdquo;,result);  sum += atoi(result);  printf(&amp;quot;\t\tdec : %d\n&amp;quot;, atoi(result));  }  result = strtok(NULL,&amp;quot; \t\n&amp;quot;);  }  }  void hextodec(char *test, int len){ // 16진수로 된 문자열  int decimal = 0;               // 10진수를 저장할 변수  int i;  int position = 0;  for (i = len - 1; i &amp;gt;= 0; i&amp;ndash;) {   // 문자열을 역순으로 반복  char ch = test[i];         // 각 자릿수에 해당하는 문자를 얻음  if (ch &amp;gt;= 48 &amp;amp;&amp;amp; ch &amp;lt;= 57) {      // 문자가 0&lt;del&gt;9이면(ASCII 코드 48&lt;/del&gt;57)  // 문자에서 0에 해당하는 ASCII 코드 값을 빼고  // 16에 자릿수를 거듭제곱한 값을 곱함  decimal += (ch - 48) * pow(16, position);  }  else if (ch &amp;gt;= 65 &amp;amp;&amp;amp; ch &amp;lt;= 70) {   // 문자가 A&lt;del&gt;F이면(ASCII 코드 65&lt;/del&gt;70)  // 대문자로 된 16진수의 처리  // 문자에서 (A에 해당하는 ASCII 코드 값 - 10)을 빼고  // 16에 자릿수를 거듭제곱한 값을 곱함  decimal += (ch - (65 - 10)) * pow(16, position);  }  else if (ch &amp;gt;= 97 &amp;amp;&amp;amp; ch &amp;lt;= 102) {  // 문자가 a&lt;del&gt;f이면(ASCII 코드 97&lt;/del&gt;102)  // 소문자로 된 16진수의 처리  // 문자에서 (a에 해당하는 ASCII 코드 값 - 10)을 빼고  // 16에 자릿수를 거듭제곱한 값을 곱함  decimal += (ch - (97 - 10)) * pow(16, position);  }  position++;  }  printf(&amp;ldquo;dec : %d\n&amp;rdquo;, decimal);  sum += decimal;  }  void atohex(char *ascii, int len){  char outword[10];  int i, tmp_len;  for(i = 0; i&amp;lt;len; i++){  sprintf(outword+i*2, &amp;ldquo;%02X&amp;rdquo;, ascii[i]);  }  tmp_len = strlen(outword);  printf(&amp;ldquo;hex : %s\t&amp;rdquo;, outword);  hextodec(outword, tmp_len);  }&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;설명 :&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
