{"id":4182,"date":"2018-11-20T10:34:39","date_gmt":"2018-11-20T05:04:39","guid":{"rendered":"https:\/\/www.csestack.org\/?p=4182"},"modified":"2019-03-09T14:27:53","modified_gmt":"2019-03-09T08:57:53","slug":"split-string-c-programming-using-strtok_r-csv","status":"publish","type":"post","link":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/","title":{"rendered":"Split String in C programming using strtok_r() | Parsing CSV File"},"content":{"rendered":"<p>For example, you have a string sentence &#8220;CSEstack is a programming portal&#8221;. You want to get each word from the sentence like &#8220;CSEstack&#8221;, &#8220;is&#8221;, &#8220;a&#8221;, &#8220;programming&#8221; and &#8220;portal.&#8221;. This can be done by splitting the sentence and storing them.<\/p>\n<p>You can use function strtok_r() to split the sentence in <a href=\"https:\/\/www.csestack.org\/c-cpp\/\">C\/C++ programming<\/a>.<\/p>\n<h3 style=\"text-align: center;\">About function\u00a0\u00a0strtok_r() in C\/C++<\/h3>\n<p><strong>Input parameter to the\u00a0strtok_r() function:<\/strong><\/p>\n<ul>\n<li>a string which you want to split<\/li>\n<li>delimiter\u00a0to distinguish and split the string<\/li>\n<li>address of the sentence\u00a0you want to split<\/li>\n<\/ul>\n<p><strong>How does it work?<\/strong><\/p>\n<p><code>strtok_r()<\/code> returns the token pointing to the next substring after delimiter. Calling function <code>strtok_r()<\/code> in a loop will give us all the sub-strings after splitting.<\/p>\n<h3 style=\"text-align: center;\">Split String in C Programming using strtok_r()<\/h3>\n<p>Check the below program.<\/p>\n<pre class=\"brush: cpp\">\/\/ C program to demonstrate working of strtok_r()\u00a0\r\n\/\/ by splitting string based on space character.\u00a0\r\n#include &lt;stdio.h&gt;\u00a0\r\n#include &lt;string.h&gt;\u00a0\r\n\r\nint main()\u00a0\r\n{\u00a0\r\n\u00a0\u00a0\u00a0char strToSplit[] = \"CSEstack is a programming portal\";\r\n\r\n\u00a0\u00a0\u00a0char *token;\r\n\u00a0\u00a0\u00a0int i=0;\r\n\u00a0\u00a0\u00a0char *strArr[5] = {0};\r\n\u00a0\u00a0\u00a0char* strSplit = strToSplit;\r\n\u00a0\u00a0\u00a0while ((token = strtok_r(strSplit , \" \", &amp;strSplit)))\r\n\u00a0\u00a0\u00a0    strArr[i++] = token;\r\n\r\n   for(int i=0; i&lt;5; i++)\r\n\u00a0\u00a0\u00a0    printf(\"\\n ++i) %s\",strArr[i]);\r\n}<\/pre>\n<p>In the above program, the delimiter is space &#8221; &#8220;.\u00a0 So, The string between two spaces will be considered as one token.<\/p>\n<p><strong>Output:<\/strong><\/p>\n<pre>1) CSEstack\r\n2) is\r\n3) a\r\n4) programming\r\n5) portal<\/pre>\n<p>After splitting the string, you can also\u00a0store the data in the array.<\/p>\n<h4 style=\"text-align: center;\">Where you can use strtok_r()?<\/h4>\n<p><strong>Use Cases:<\/strong><\/p>\n<ul>\n<li>If you are working on any networking project, you can concatenate all the payload. Send it to another device and split the payload.<\/li>\n<li>In networking, you can also use this function to split the\u00a0IP address.<\/li>\n<li>It can also\u00a0be useful for sending the grouped data using CGI variable.<\/li>\n<\/ul>\n<h3 style=\"text-align: center;\">Using\u00a0strtok_r() for Parsing CSV file<\/h3>\n<p>CSV (comma separated value) is a special type of data structure where we can save the different data entities separated\u00a0by a comma.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre>Name,Age,profession\r\nSteve,34,developer\r\nNoob,55,tester\r\nClave,32,designer<\/pre>\n<p>You can simply <a href=\"https:\/\/www.csestack.org\/reading-writing-files-c-program\/\">read the CSV file<\/a> and loop over each line to get the name, age and profession of the employee by using <code>strtok_r()<\/code>.\u00a0Here, delimiter will be &#8216;,&#8217; instead of space.<\/p>\n<pre class=\"brush: cpp\">\/\/ C program to demonstrate working of strtok_r()\u00a0\r\n\/\/ by splitting string based on space character.\u00a0\r\n#include &lt;stdio.h&gt;\u00a0\r\n#include &lt;string.h&gt;\u00a0\r\n\r\nint main()\u00a0\r\n{\u00a0\r\n\u00a0\u00a0\u00a0char strEmpData[] = \"Steve,34,developer\";\r\n\r\n\u00a0\u00a0\u00a0char *token;\r\n\u00a0\u00a0\u00a0int i=0;\r\n\u00a0\u00a0\u00a0char *strArr[3] = {0};\r\n\u00a0\u00a0\u00a0char* strSplit = strEmpData;\r\n\u00a0\u00a0\u00a0while ((token = strtok_r(strSplit , \",\", &amp;strSplit)))\r\n\u00a0\u00a0\u00a0    strArr[i++] = token;\r\n \r\n\u00a0\u00a0printf(\"\\n Name: %s\",strArr[0]);\r\n\u00a0\u00a0printf(\"\\n Age: %d\",atoi(strArr[1]));\r\n\u00a0\u00a0printf(\"\\n Profession: %s\",strArr[2]);\r\n}<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<pre>Name: Steve\r\nAge: 34\r\nProfession: developer<\/pre>\n<p><strong>Related String Program in C:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.csestack.org\/difference-between-character-array-string\/\">Difference Between Array and String in Programming<\/a><\/li>\n<li><a href=\"https:\/\/www.csestack.org\/c-program-to-remove-white-spaces-from-string\/\">C Program to Remove White Spaces from String<\/a><\/li>\n<\/ul>\n<p>Any question or point to discuss this code to split String in C programming, write in the comment section.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to split String in C programming with delimiter using strtok_r() function? Read and parse the CSV file in C\/C++ and store it in the array.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38,7],"tags":[272],"class_list":["post-4182","post","type-post","status-publish","format-standard","hentry","category-c-cpp","category-code","tag-c-string"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Split String in C programming using strtok_r() | Parsing CSV File<\/title>\n<meta name=\"description\" content=\"How to split String in C programming with delimiter using strtok_r() function? Read and parse the CSV file in C\/C++ and store it in the array.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Split String in C programming using strtok_r() | Parsing CSV File\" \/>\n<meta property=\"og:description\" content=\"How to split String in C programming with delimiter using strtok_r() function? Read and parse the CSV file in C\/C++ and store it in the array.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/\" \/>\n<meta property=\"og:site_name\" content=\"CSEstack\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/aniruddha.ca\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/aniruddha.ca\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-20T05:04:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-03-09T08:57:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.csestack.org\/wp-content\/uploads\/2024\/01\/csestack-blog.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Aniruddha Chaudhari\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ani_chaudhari\" \/>\n<meta name=\"twitter:site\" content=\"@ani_chaudhari\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Aniruddha Chaudhari\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/\"},\"author\":{\"name\":\"Aniruddha Chaudhari\",\"@id\":\"https:\\\/\\\/www.csestack.org\\\/#\\\/schema\\\/person\\\/634ef1a9c4f38b0d340c6d45fa771218\"},\"headline\":\"Split String in C programming using strtok_r() | Parsing CSV File\",\"datePublished\":\"2018-11-20T05:04:39+00:00\",\"dateModified\":\"2019-03-09T08:57:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/\"},\"wordCount\":332,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.csestack.org\\\/#\\\/schema\\\/person\\\/634ef1a9c4f38b0d340c6d45fa771218\"},\"keywords\":[\"c-string\"],\"articleSection\":[\"C \\\/ C++\",\"Code\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/\",\"url\":\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/\",\"name\":\"Split String in C programming using strtok_r() | Parsing CSV File\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.csestack.org\\\/#website\"},\"datePublished\":\"2018-11-20T05:04:39+00:00\",\"dateModified\":\"2019-03-09T08:57:53+00:00\",\"description\":\"How to split String in C programming with delimiter using strtok_r() function? Read and parse the CSV file in C\\\/C++ and store it in the array.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.csestack.org\\\/split-string-c-programming-using-strtok_r-csv\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.csestack.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Split String in C programming using strtok_r() | Parsing CSV File\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.csestack.org\\\/#website\",\"url\":\"https:\\\/\\\/www.csestack.org\\\/\",\"name\":\"CSEstack\",\"description\":\"Computer Science &amp; Programming Portal\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.csestack.org\\\/#\\\/schema\\\/person\\\/634ef1a9c4f38b0d340c6d45fa771218\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.csestack.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.csestack.org\\\/#\\\/schema\\\/person\\\/634ef1a9c4f38b0d340c6d45fa771218\",\"name\":\"Aniruddha Chaudhari\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.csestack.org\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/Aniruddha-Chaudhari.jpg\",\"url\":\"https:\\\/\\\/www.csestack.org\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/Aniruddha-Chaudhari.jpg\",\"contentUrl\":\"https:\\\/\\\/www.csestack.org\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/Aniruddha-Chaudhari.jpg\",\"width\":634,\"height\":634,\"caption\":\"Aniruddha Chaudhari\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.csestack.org\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/Aniruddha-Chaudhari.jpg\"},\"description\":\"I am a Python enthusiast who loves Linux and Vim. I hold a Master of Computer Science degree from NIT Trichy and have 10 years of experience in the IT industry, focusing on the Software Development Lifecycle from Requirements Gathering, Design, Development to Deployment. I have worked at IBM, Ericsson, and NetApp, and I share my knowledge on CSEstack.org.\",\"sameAs\":[\"https:\\\/\\\/www.csestack.org\",\"https:\\\/\\\/www.facebook.com\\\/aniruddha.ca\",\"pythonwithani\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/aniruddha28\\\/\",\"https:\\\/\\\/x.com\\\/ani_chaudhari\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCw0a__B0eJsvCujkSIfLTAA\"],\"url\":\"https:\\\/\\\/www.csestack.org\\\/author\\\/anicse\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Split String in C programming using strtok_r() | Parsing CSV File","description":"How to split String in C programming with delimiter using strtok_r() function? Read and parse the CSV file in C\/C++ and store it in the array.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/","og_locale":"en_US","og_type":"article","og_title":"Split String in C programming using strtok_r() | Parsing CSV File","og_description":"How to split String in C programming with delimiter using strtok_r() function? Read and parse the CSV file in C\/C++ and store it in the array.","og_url":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/","og_site_name":"CSEstack","article_publisher":"https:\/\/www.facebook.com\/aniruddha.ca","article_author":"https:\/\/www.facebook.com\/aniruddha.ca","article_published_time":"2018-11-20T05:04:39+00:00","article_modified_time":"2019-03-09T08:57:53+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.csestack.org\/wp-content\/uploads\/2024\/01\/csestack-blog.jpg","type":"image\/jpeg"}],"author":"Aniruddha Chaudhari","twitter_card":"summary_large_image","twitter_creator":"@ani_chaudhari","twitter_site":"@ani_chaudhari","twitter_misc":{"Written by":"Aniruddha Chaudhari","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/#article","isPartOf":{"@id":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/"},"author":{"name":"Aniruddha Chaudhari","@id":"https:\/\/www.csestack.org\/#\/schema\/person\/634ef1a9c4f38b0d340c6d45fa771218"},"headline":"Split String in C programming using strtok_r() | Parsing CSV File","datePublished":"2018-11-20T05:04:39+00:00","dateModified":"2019-03-09T08:57:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/"},"wordCount":332,"commentCount":0,"publisher":{"@id":"https:\/\/www.csestack.org\/#\/schema\/person\/634ef1a9c4f38b0d340c6d45fa771218"},"keywords":["c-string"],"articleSection":["C \/ C++","Code"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/","url":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/","name":"Split String in C programming using strtok_r() | Parsing CSV File","isPartOf":{"@id":"https:\/\/www.csestack.org\/#website"},"datePublished":"2018-11-20T05:04:39+00:00","dateModified":"2019-03-09T08:57:53+00:00","description":"How to split String in C programming with delimiter using strtok_r() function? Read and parse the CSV file in C\/C++ and store it in the array.","breadcrumb":{"@id":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.csestack.org\/split-string-c-programming-using-strtok_r-csv\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.csestack.org\/"},{"@type":"ListItem","position":2,"name":"Split String in C programming using strtok_r() | Parsing CSV File"}]},{"@type":"WebSite","@id":"https:\/\/www.csestack.org\/#website","url":"https:\/\/www.csestack.org\/","name":"CSEstack","description":"Computer Science &amp; Programming Portal","publisher":{"@id":"https:\/\/www.csestack.org\/#\/schema\/person\/634ef1a9c4f38b0d340c6d45fa771218"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.csestack.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.csestack.org\/#\/schema\/person\/634ef1a9c4f38b0d340c6d45fa771218","name":"Aniruddha Chaudhari","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.csestack.org\/wp-content\/uploads\/2019\/03\/Aniruddha-Chaudhari.jpg","url":"https:\/\/www.csestack.org\/wp-content\/uploads\/2019\/03\/Aniruddha-Chaudhari.jpg","contentUrl":"https:\/\/www.csestack.org\/wp-content\/uploads\/2019\/03\/Aniruddha-Chaudhari.jpg","width":634,"height":634,"caption":"Aniruddha Chaudhari"},"logo":{"@id":"https:\/\/www.csestack.org\/wp-content\/uploads\/2019\/03\/Aniruddha-Chaudhari.jpg"},"description":"I am a Python enthusiast who loves Linux and Vim. I hold a Master of Computer Science degree from NIT Trichy and have 10 years of experience in the IT industry, focusing on the Software Development Lifecycle from Requirements Gathering, Design, Development to Deployment. I have worked at IBM, Ericsson, and NetApp, and I share my knowledge on CSEstack.org.","sameAs":["https:\/\/www.csestack.org","https:\/\/www.facebook.com\/aniruddha.ca","pythonwithani","https:\/\/www.linkedin.com\/in\/aniruddha28\/","https:\/\/x.com\/ani_chaudhari","https:\/\/www.youtube.com\/channel\/UCw0a__B0eJsvCujkSIfLTAA"],"url":"https:\/\/www.csestack.org\/author\/anicse\/"}]}},"_links":{"self":[{"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/posts\/4182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/comments?post=4182"}],"version-history":[{"count":12,"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/posts\/4182\/revisions"}],"predecessor-version":[{"id":4737,"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/posts\/4182\/revisions\/4737"}],"wp:attachment":[{"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/media?parent=4182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/categories?post=4182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.csestack.org\/wp-json\/wp\/v2\/tags?post=4182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}