সি তে strtok(); function এবং const keyword সম্পরকে বিস্তারিত জানতে চাই।

asked 19 Jun '15, 12:04

imTroy's gravatar image

imTroy
173115


strtok()

char *strtok(char *str, const char *delim)

এই ফাংশনের কাজ হচ্ছে str স্ট্রিংটিকে ছোট ছোট অংশে কেটে ফেলা, এবং এ কাজে delim সাহায্য করে। এটি একটি পয়েন্টার রিটার্ন করে যার কাজ হচ্ছে প্রথম অংশটিকে ধরে রাখা।

উদাহরণ:

char *token; 
char str[] = "techsharif.com";
token = strtok(str, ".");

এখানে strtok() ফাংশনটি str স্টিংটিকে ছোট অংশে কেটে ফেলবে। সেখানেই কাটবে যেখানে . পাবে। একাধিক জায়গায় . থাকলে যেখানে প্রথমবার পাবে সেখানে কাটবে। এরপর কাটা অংশটির প্রথম অ্যাড্রেস রিটার্ন করবে যা আমরা token পয়েন্টার ভ্যারিয়েবলে রেখেছি যাতে কাটা অংশটি নিয়ে কাজ করতে পারি।

এবার একটু বড় উদাহরণ দেখি:

#include <string.h>
#include <stdio.h>

int main()
{
   char str[80] = "techsharif.com - website - bangla c programming tutorial";
   const char delim[2] = "-";
   char *token;

   /* প্রথম অংশটি কেটে নিলাম  */
   token = strtok(str, delim);

   /* বাকিগুলোর জন্য  */
   while( token != NULL ) 
   {
      printf( " %s\n", token );

      /* str-এর জায়গায় এখন NULL দেব, কারণ NULL দিলে আগের স্ট্রিংটির পরবর্তী অংশ নিয়ে কাজ করে। */
      token = strtok(NULL, delim); 
   }

   return(0);
}

আউটপুট:

 techsharif.com
  website
  bangla c programming tutorial

const keyword

const-এর মাধ্যমে কনস্ট্যান্ট ডিক্লেয়ার করা হয়। কোনো ভ্যারিয়েবলকে কনস্ট্যান্ট ডিক্লেয়ার করা হলে তাঁর মান পরবর্তিতে আর পরিবর্তন করা যায় না। প্রোগ্রাম তৈরির ক্ষেত্রে বিভিন্ন প্রয়োজনে ভ্যারিয়েবল ব্যবহার করা হয়। একই ভ্যারিয়েবলের মান প্রোগ্রামের বিভিন্ন অংশে বিভিন্ন হতে পারে। বিপরীতক্রমে, প্রোগ্রামে ভ্যারিয়েবলের মতই কনসট্যান্ট বা ধ্রুবক ব্যবহার করা হয়, যার মান প্রোগ্রামের সকল অংশে একই থাকে। কনস্ট্যান্ট বা ধ্রুবক ঘোষণা করার জন্য const কিওয়ার্ড ব্যবহার করা হয়। যেমন: const int pi = 3.1416;। এখানে আরো ভালো করে বোঝানো আছে।

permanent link

answered 20 Jun '15, 07:16

Sharif%20Chowdhury's gravatar image

Sharif Chowdhury
3.5k111

edited 19 Jul, 10:01

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
74618

Thanks Sharif Bhai. আপনার program এ token = strtok(str, delim); এর মানে কি এই যে str string এর যেখানে প্রথমবার delim পাবে সেখানে কেটে string এর প্রথম charcter t এর address token variable এ রাখবে?

(20 Jun '15, 18:08) imTroy

হুম ঠিক ধরেছেন ।

(21 Jun '15, 04:34) Sharif Chowdhury

token = strtok(NULL, delim); এই লাইন টা clear হচ্ছে না ভাই। একটু বুঝিয়ে দিলে ভাল হয়। আর উত্তরটি একসেপ্ট কিভাবে করব? নতুন user ত টাই বুঝতে পারছি না।

(23 Jun '15, 14:22) imTroy

char str[80] = "techsharif.com - website - bangla c programming     tutorial";
   const char delim[2] = "-";
   char *token;

   token = strtok(str, delim); 
   printf( " %s\n", token );
   token = strtok(NULL, delim);
   printf( " %s\n", token );

token = strtok(str, delim); // এখানে কাটার পর token এর মান techsharif.com এবং বাকি অংশ - website - bangla c programming tutorial

token = strtok(NULL, delim); // এখানে আমি NULL লিখলাম কারন আমি আগের স্ট্রিং এর পরের অংশ কাটতে চাই । যদি নতুন স্ট্রিং কাটতে চাইতাম তাহলে এমন হইতো strtok(str2, delim)

(23 Jun '15, 14:40) Sharif Chowdhury

প্রথমে techsharif.com অংশটি কেটে প্রথম এড্রেস মানে t এর address token variable এ রাখবে তারপর condition true হউয়ায় লুপ এ প্রবেশ করে techsharif.com স্ট্রি টি প্রিন্ট করবে তারপর?

(23 Jun '15, 15:09) imTroy

তারপর - website - bangla c programming tutorial এই অংশটি নিয়ে কাজ করবে ।

(23 Jun '15, 19:26) Sharif Chowdhury
1

ধন্যবাদ বুঝিয়ে দেয়ার জন্য, আসলে আমার শেষ comment এর কোন যুক্তি ছিল না ভাইয়া, আমার 2nd comment এর পরপরই এই comment টা করতেছিলাম, কোন এক কারনে comment টা করতে দেরি হওয়ায় এই গেপ এ আপনি সমস্যা টি বুঝিয়ে দিয়ে দিলেন :) ধন্যবাদ আবার ও আপনাকে

(24 Jun '15, 12:37) imTroy
showing 5 of 7 show 2 more comments
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×1

question asked: 19 Jun '15, 12:04

question was seen: 980 times

last updated: 19 Jul, 10:01

Related questions