Showing posts with label C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং. Show all posts
Showing posts with label C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং. Show all posts

Friday, November 21, 2014

count the length of a sentence ( string strlen function)

 

count the length of a sentence ( string strlen function)
#include<stdio.h>
#include<string.h>
int main()
{
    char a[50];
    scanf("%s",a);
    int l=strlen(a);
    printf("Length = %d\n",l);
    return 0;
}

CONVERT capital letters in small & small in capital

 

CONVERT capital letters in small & small in capital

 

//show capital letters in small & small in capital
#include<stdio.h>
int main()
{
    char a[100];
    int i,c=0;
     gets(a);
    //scanf("%s",a);
   for(i=0;a[i]!='\0';i++)
   {
      if(a[i]>=65&&a[i]<=90)
      {
          a[i]=a[i]+32;
      }
      else
      {
          a[i]=a[i]-32;
      }
   }
    printf("%s",a);
    return 0;
}

Thursday, October 2, 2014

C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং function 2

 

####        function name : strupr

একটি স্ট্রিং এ capital letter কে small letter এ পরিনিত করতে ব্যবহিত হয় ।

#include<stdio.h>
int main()
{
char ch[100];
printf("ENter the number = ");
gets(ch);

strupr(ch);
printf("%s",ch);
return 0;

}


Screenshot_4


 


####        function name : strrev

একটি স্ট্রিং কে উলট করতে ব্যবহিত হয় ।


#include<stdio.h>
int main()
{
char ch[100];
printf("ENter the number = ");
gets(ch);

strrev(ch);
printf("%s",ch);
return 0;

}

Screenshot_5

####        function name : strrev

একটি স্ট্রিং এ small letter কে capital letter এ পরিনিত করতে ব্যবহিত হয় । ।


#include<stdio.h>
int main()
{
char ch[100];
printf("ENter the number = ");
gets(ch);

strlwr(ch);
printf("%s",ch);
return 0;

}

Saturday, September 27, 2014

C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং function ১

####        function name : strcpy

একটি স্ট্রিং কে অন্য স্ট্রিং এ কপি করতে ব্যবহিত হয় ।

#include<stdio.h>
#include<string.h>
int main()
{
char a[50]="abcdef";
char b[50];

strcpy(b,a);
printf("%s\n",a);

printf("%s\n",b);

return 0;


}


Screenshot_15

####        function name : strlen



একটি স্ট্রিং এর length জানতে  ব্যবহিত হয় ।
#include<stdio.h>
#include<string.h>
int main()
{
char a[50];
scanf("%s",a);
int l=strlen(a);
printf("Length = %d\n",l);
return 0;
}

Screenshot_16

###       function name : strcat



একটি স্ট্রিং এর সাথে অন্য স্ট্রিং কে যোগ করতে ব্যবহিত হয় ।

#include<stdio.h>
#include<string.h>
int main()
{
char a[50]="abcdef";
char b[50]="ghijkl";

strcat(a,b);
printf("%s \n",a);
return 0;


}


Screenshot_17

#include<stdio.h>
int main()
{
char a[100];
scanf("%s",a);
strcat(a," Bangladesh");
printf("%s",a);
return 0;
}






###       function name : strcmp

২টি  স্ট্রিং এর মধ্যে তুলনা  করতে ব্যবহিত হয় ।

#include<stdio.h>
#include<string.h>
int main()
{

char a[100],b[100];
int x;
gets(a);
gets(b);

x = strcmp(a,b);
if(x!=0)
{
printf("string are not equal");
}
else
{

printf("string are equal");
}

return 0;
}


Thursday, September 25, 2014

C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং 6

কিছু প্রোগ্রাম example হিসেবে দেওয়া হল :

EXample 1:আমরা যদি শুধু a-m বাa-z বা অন্য  কোন নির্দিস্থ স্থান পর্যন্ত প্রিন্ট করতে চাই তাহলে এভাবে %[a-m] use করতে হবে ।

#include<stdio.h>
int main()
{
char str [100];
scanf("%[a-z]",str);
printf("%s",str);
return 0;

}


Screenshot_13

EXample 2:

A_Z ,a-z ,0-9 পর্যন্ত এবং স্পেস সহ print  করতে চাইলে এভাবে শর্ত দিতে হবে।

#include<stdio.h>
int main()
{
char str [100];
scanf("%[A-Z a-z0-9]",str);
printf("%s",str);
return 0;

}




Screenshot_14

EXample 3:নির্দিস্থ কোন কিছু print করতে না চাইলে এভাবে দিতে হয়

#include<stdio.h>
int main()
{
char str [100];
scanf("%[^a]",str);
printf("%s",str);
return 0;

}

Capture
Example 4:

নতুন লাইন না পাওয়া পর্যন্ত প্রিন্ট করবে ।

#include<stdio.h>
int main()
{
char ch[100];
while(gets(ch))
{
if(ch[0]=='\0')
break;
printf("%s\n",ch);
}
return 0;
}


Capture1

C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং 5

কিছু প্রোগ্রাম example হিসেবে দেওয়া হল :
EXample :1
যতক্ষণ B না পাবে ততক্ষণ printf করবে ।
#include<stdio.h>
int main()
{
char ch[10];
int i=0;
ch[0]='E';
ch[1]='W';
ch[2]='U';

ch[3]='B';
ch[4]='A';
ch[5]='N';
ch[6]='G';
ch[7]='L';
ch[8]='A';
while(ch[i]!='B')
{
printf("%c",ch[i]);
i++;
}

}

Screenshot_10





Example 2:

#include<stdio.h>
int main()
{
char ch[10];
int i=0;
ch[0]='E';
ch[1]='W';
ch[2]='U';

ch[3]='\0';
ch[4]='A';
ch[5]='N';
ch[6]='G';
ch[7]='L';
ch[8]='A';

printf("%s",ch);
}




Screenshot_11



Example 3:
#include<stdio.h>
int main()
{
char ch[100]="ewu bangla";
int i;

printf("%c",ch[5]);
return 0;
}

Screenshot_12


 

Tuesday, September 23, 2014

C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং 4

কিছু প্রোগ্রাম example হিসেবে দেওয়া হল :

EXAmple 1:

stacat function এর মাধ্যমে ২টা string কে এক সাথে জোড়া লাগান যায় এবং stalen function এর মাধ্যমে length পরিমাপ করা যায় .

 

#include<stdio.h>
#include<string.h>
int main()
{
char a[50]="BANGLA";
char b[50]="desh";

strcat(a,b);
printf("%s and length is %d\n",a,strlen(a));
return 0;


}


Screenshot_6



 


EXAmple  2 : এই problem টা তে তুমি কোন word টা কে reverse করতে চাও তা বলে দিলে, program টি reverse করে দেখবে ।


#include<stdio.h>
int main()
{
char str[30]="bangla",str_new[30];
int i,j;
for(i=5,j=0;i>=0;i--)
{
str_new[j]=str[i];
j++;
}
str_new[j]='\0';
printf("%s",str_new);
printf("\n");

}


 


EXAmple  3 :  strcpy function টা এক variableএর মান কে  অন্য variable এ কপি করতে পারবে 


#include<stdio.h>
#include<string.h>
int main()
{
char a[50]="abcdef";
char b[50];

strcpy(b,a);
printf("%s\n",a);

printf("%s\n",b);

return 0;


}


 


Screenshot_7


 


EXample  3:


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

int main()
{
char name[3][10];
int i;
for(i=0;i<3;i++)
{
scanf("%s",name[i]);
}

for(i=0;i<3;i++)
{
printf("%s\n",name[i]);
}

}

এখানে আমরা তিনটা ক্যারেক্টার এর ARRAY (2D array) রাখছি , যেখানে  প্রত্যেকটা character এর length হচ্ছে ১০.

 


 


Screenshot_9

C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং 3

কিছু প্রোগ্রামিংexample হিসেবে দেওয়া হল ।

EXample 1;

STring এ  Input হিসেবে scanf বা %s ব্যবহারের একটি সমস্যা হচ্ছে স্ট্রিংয়ে কোনো হোয়াইটস্পেস ক্যারেক্টার (যেমন: স্পেস, ট্যাব ইত্যাদি) থাকা যাবে না, এমন কিছু পেলে scanf ওই ক্যারেক্টার পর্যন্ত একটি স্ট্রিং ধরে নেয়। যেমন, ইনপুট যদি হয় this is তবে scanf প্রথমে thisকেই স্ট্রিং হিসেবে নেবে, তারপরে যদি আবার scanf ফাংশন কল করা হয়, তবে isকে সে স্ট্রিং হিসেবে ইনপুট নিয়ে নেবে।

এই সমস্যা এড়ানোর জন্য আমরা gets ফাংশন ব্যবহার করতে পারি। নিচের উদাহরণটি দেখো:

 

#include<stdio.h>
int main()
{
char str[30];
// gets(str);
// puts(str);

scanf("%s",str);
printf("%s",str);
return 0;

}


 


 


Screenshot_8 


 


#include<stdio.h>
int main()
{
char str[30];
gets(str);
puts(str);

// scanf("%s",str);
// printf("%s",str);
return 0;

}



 


Screenshot_1


যদি scanf দিয়ে লিখতে চাও তবে নিচের নিয়মে লিখতে হবে ।


#include<stdio.h>
int main()
{
char str[30];
scanf("%[^\n]",str);
printf("%s\n",str);
return 0;

}


 


Screenshot_5 


 


 


EXample :2


কোন string এর length  বাহির করার জন্য strlen() function use করতে হয় ।


#include<stdio.h>
#include<string.h>
int main()
{
char a[50];
scanf("%s",a);
int len=strlen(a);
printf("Length = %d\n",len);
return 0;
}


Screenshot_2


function ছাড়া ও তুমি নিচের way তে বের করতে পার .


#include<stdio.h>
int main()
{
char str[30];
int i,length=0;

gets(str);
for(i=0;str[i]!='\0';i++)
{
length=length+1;
}
printf("length of %s is %d\n",str,length);
}


Screenshot_3


 


Example 3 :


এখানে আমরা তিনটা ক্যারেক্টার এর ARRAY (2D array) রাখছি , যেখানে  প্রত্যেকটা character এর length হচ্ছে ১০.


#include<stdio.h>
#include<string.h>
int main()
{
char name[3][10] = {"shadhin","jahid",{'p' , 'e', 'r', 'v', 'e', 'z'}};
int i;

for(i=0;i<3;i++)
{
printf("%s\n",name[i]);
}

}


 


Example 4: এই problem টা তে তুমি কোন word টা কে reverse করতে চাও এবংতার length বলে দিলে, program টি reverse করে দেখবে ।


#include<stdio.h>
int main()
{
char str[30];
int n,i;
gets(str);
scanf("%d",&n);
for(i=n;i>=0;i--)
{
printf("%c",str[i]);
}

printf("\n");
return 0;
}

C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং 2

আমাদের পরবর্তী প্রোগ্রামের লক্ষ্য হবে দুটি স্ট্রিং জোড়া দেওয়া বা concatenate করা। যেমন একটি স্ট্রিং যদি হয় "bangla" এবং আরেকটি স্ট্রিং যদি হয় "desh" তবে দুটি জোড়া দিয়ে "bangladesh" বানাতে হবে।

#include<stdio.h>
int main()
{
char a[30]="Bangla",b[30]="desh";
int i,j;
for(i=6,j=0;b[j]!='\0';j++)
{
a[i]=b[j];
i++;
}
a[i]='\0';
printf("%s\n",a);
}


 

স্ট্রিংয়ের বেসিক জিনিসগুলো নিয়ে আলোচনা করলাম। তবে মজার ব্যাপার হচ্ছে সি ল্যাঙ্গুয়েজে একটি হেডার ফাইল আছে, যার নাম string.h এবং ওইখানে বেশিরভাগ স্ট্রিং-সংক্রান্ত কাজের জন্য ফাংশন তৈরি করে দেওয়া আছে (যেমন: strcmp, strlen, strcpy ইত্যাদি)।

এখন আমরা আরেকটি প্রোগ্রাম লিখব যেটি ইনপুট হিসেবে একটি স্ট্রিং নেবে (যেখানে অনেকগুলো শব্দ থাকবে)। এই স্ট্রিংয়ের সর্বোচ্চ দৈর্ঘ্য হবে 1000 । শব্দগুলোর মাঝখানে এক বা একাধিক স্পেস থাকবে। আউটপুট হিসেবে প্রতিটি শব্দ আলাদা লাইনে প্রিন্ট করতে হবে। বিরামচিহ্নগুলো (punctuation) প্রিন্ট করা যাবে না এবং শব্দের প্রথম অক্ষর হবে বড় হাতের।

অনেক শর্ত দিয়ে ফেললাম। তবে প্রোগ্রামটি খুব কঠিন কিছু নয়। নিজে নিজে চেষ্টা করতে পারো। আর না পারলে এখন চলো দেখি কীভাবে সমাধান করা যায়।

প্রথম কথা হচ্ছে, ইনপুট নেব কীভাবে? বুঝতেই পারছ যে ইনপুটে যেহেতু স্পেস থাকবে, scanf("%s") ব্যবহার করা যাবে না। তাই আমরা gets() ব্যবহার করব। তার পরের কথা হচ্ছে একটি শব্দে কোন কোন ক্যারেক্টার থাকতে পারে? যেহেতু বলা নেই, আমরা ধরে নিই 'a' থেকে 'z', 'A' থেকে 'Z' আর '0' থেকে '9' থাকবে।

তার পরের প্রশ্ন হচ্ছে, আমরা কখন বুঝব বা আমাদের প্রোগ্রামকে কীভাবে বোঝাবো যে একটি শব্দ শুরু হয়েছে?-এর জন্য আমরা একটি ভেরিয়েবল রাখতে পারি। ভেরিয়েবলের নাম যদি দিই is_word_started তাহলে এর মান 0 হলে বুঝব শব্দ শুরু হয়নি, শব্দ শুরু হলে এর মান আমরা 1 করে দেব। আবার শব্দ শেষ হলে 0 করে দেব। যখন দেখব শব্দ শুরু হয়ে গেছে (is_word_started-এর মান 1) কিন্তু কোনো ক্যারেক্টারের মান 'a' – 'z' বা 'A' – 'Z', বা '0' – '9' এই রেঞ্জের মধ্যে নেই, তখনই বুঝব শব্দটি শেষ। তোমরা যদি এর আগে প্রোগ্রামটি চেষ্টা করার পরও লিখতে না পারো, এখন চেষ্টা করলে পারবে আশা করি। আমি এখন কোডটি লিখে দেব তবে সেটি দেখার আগে অবশ্যই নিজে করার চেষ্টা করতে হবে।

 
#include <stdio.h>    
#include <string.h>
int main()
{
char s[1002], word[100];
int i, j, length, is_word_started;
gets(s);
length = strlen(s);
is_word_started = 0;
for (i = 0, j = 0; i < length; i++) {
if (s[i] >= 'a' && s[i] <= 'z') {
if (is_word_started == 0) {
is_word_started = 1;
word[j] = 'A' + s[i] - 'a'; // first character is capital
j++;
}
else {
word[j] = s[i];
j++;
}
}
else if (s[i] >= 'A' && s[i] <= 'Z') {
if (is_word_started == 0) {
is_word_started = 1;
}
word[j] = s[i];
j++;
}
else if (s[i] >= '0' && s[i] <= '9') {
if (is_word_started == 0) {
is_word_started = 1;
}
word[j] = s[i];
j++;
}
else {
if (is_word_started == 1) {
is_word_started = 0;
word[j] = '\0';
printf("%s\n", word);
j = 0;
}
}
}
return 0;
}



প্রোগ্রামটি বুঝতে কি একটু সমস্যা হচ্ছে? আগে প্রোগ্রামটি চটপট কম্পিউটারে টাইপ করে ফেলো, কম্পাইল ও রান করো। যারা লিনাক্স ব্যবহার করছ তারা gets() ব্যবহারের কারণে কম্পাইলার থেকে একটি সতর্ক সংকেত (warning) পেতে পারো, পাত্তা দিয়ো না।

ইনপুট হিসেবে যেকোনো কিছু লিখতে পারো। যেমন: This is a test.। আউটপুট কী?

আউটপুট হচ্ছে এই রকম:

This
Is
A

কী মুশকিল! test গেল কোথায়?

এখন তোমার কাজ হবে test-এর নিখোঁজ হওয়ার রহস্যটা তদন্ত করা। তারপর আমি প্রোগ্রামটি ব্যাখ্যা করব।

তোমরা দেখো প্রোগ্রামে আমি স্ট্রিংয়ের দৈর্ঘ্য নির্ণয়ের জন্য strlen ফাংশন ব্যবহার করেছি। আর-এর জন্য আমাকে string.h হেডার ফাইলটি include করতে হয়েছে। ইনপুট হিসেবে স্ট্রিংটা নিলাম s-এ। আর word রাখার জন্য একটি অ্যারে ডিক্লেয়ার করে রেখেছি। তারপর আমি i = 0 থেকে length পর্যন্ত একটি লুপ চালিয়েছি s-এর ভেতরের প্রতিটি ক্যারেক্টার পরীক্ষা করার জন্য।

if (s[i] >= 'a' && s[i] <= 'z') দিয়ে পরীক্ষা করলাম এটি ছোট হাতের অক্ষর নাকি। যদি ছোট হাতের অক্ষর হয় তবে একটি শব্দের প্রথম অক্ষর কি না সেটি জানতে হবে। কারণ প্রথম অক্ষর হলে ওটাকে আবার বড় হাতের অক্ষরে রূপান্তর করতে হবে। সেই পরীক্ষাটা আমরা করেছি: if (is_word_started == 0) দিয়ে। এটি সত্য হওয়া মানে শব্দ শুরু হয়নি, এটিই প্রথম অক্ষর। তাই আমরা is_word_started-এর মান 1 করে দেব। আর word[j]তে s[i]-এর বড় হাতের অক্ষরটা নেব। তারপর j-এর মান এক বাড়াতে হবে। else if (s[i] >= 'A' && s[i] <= 'Z') এবং else if (s[i] >= '0' && s[i] <= '9') এই দুটি শর্তের ভেতরেই আমরা একই কাজ করি। s[i]কে word[j]তে কপি করি। তাই চাইলে দুটি শর্তকে একসঙ্গে এভাবেও লিখতে পারতাম: else if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= '0' && s[i] <= '9')) তার পরের else-এর ভেতরে ঢোকার মানে হচ্ছে আগের if এবং else if-এর শর্তগুলো মিথ্যা হয়েছে। তাই s[i]-এর ভেতরে যেই ক্যারেক্টার আছে সেটি word-এ রাখা যাবে না। এবং যদি word ইতিমধ্যে শুরু হয়ে গিয়ে থাকে, সেটি শেষ করতে হবে এবং wordটি প্রিন্ট করতে হবে। আর যদি word শুরু না হয়ে থাকে তাহলে কিছু করার দরকার নেই।

 else {    
if (is_word_started == 1) {
is_word_started = 0;
word[j] = '\0';
printf("%s\n", word);
j = 0;
}
}

তোমরা কি test-রহস্য সমাধান করতে পেরেছ? তোমরা চেষ্টা করতে থাকো আর আমি এখন প্রোগ্রামটি অন্যভাবে লিখব (এর সঙ্গে test রহস্যের কোনো সম্পর্ক নেই সেটি বলে রাখলাম)।

এখন আমি যেটি করব, প্রোগ্রামটি এমনভাবে লিখব যাতে word অ্যারেটিই ব্যবহার করতে না হয়! একটু চিন্তা করে দেখো। আসলে তো এই অ্যারেটি নিয়ে আমরা কিছু করছি না প্রিন্ট করা ছাড়া। তাই এর আসলে কোনো দরকার নেই।

 
#include <stdio.h>    
#include <string.h>
int main()
{
char s[1002], ch;
int i, length, is_word_started;
gets(s);
length = strlen(s);
is_word_started = 0;
for (i = 0; i < length; i++) {
if (s[i] >= 'a' && s[i] <= 'z') {
if (is_word_started == 0) {
is_word_started = 1;
ch = 'A' + s[i] - 'a';
printf("%c", ch);
}
else {
printf("%c", s[i]);
}
}
else if ((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= '0' && s[i] <= '9')) {
if (is_word_started == 0) {
is_word_started = 1;
}
printf("%c", s[i]);
}
else {
if (is_word_started == 1) {
is_word_started = 0;
printf("\n");
}
}
}
printf("\n");
return 0;
}



এখন প্রোগ্রামটি বুঝতে চেষ্টা করো এবং বিভিন্ন ইনপুট দিয়ে পরীক্ষা করে দেখো। যেমন:

This is test number 9.9

 

লেখাটি এইখান হতে নেওয়া

Monday, September 22, 2014

C প্রোগ্রামিং - 9 অধ্যায়–STring স্ট্রিং ১ম

এক বা একাধিক character মিলে string তৈরি হয়। সোজা কথায় স্ট্রিং হচ্ছে ক্যারেক্টার টাইপের অ্যারে। তবে প্রোগ্রামিংয়ে এটির ব্যবহার এতই বেশি যে কোনো কোনো ল্যাঙ্গুয়েজে  স্ট্রিংকে আলাদা একটি ডাটা টাইপ হিসেবে ধরা হয়। তবে সি-তে আমরা char টাইপের অ্যারে দিয়েই স্ট্রিংয়ের কাজ করব।
নিচের উদাহরণগুলো লক্ষ করো:
 
   1:  char country[11] = {'B', 'a', 'n', 'g', 'l', 'a', 'd', 'e', 's', 'h', '\0'};    
   2:  char country[] = {'B', 'a', 'n', 'g', 'l', 'a', 'd', 'e', 's', 'h', '\0'};    
   3:  char country[] = "Bangladesh";    
   4:  char *country = "Bangladesh";    



এভাবে আমরা স্ট্রিং ডিক্লেয়ার করতে পারি। চারটি ডিক্লারেশন আসলে একই জিনিস। সবার শেষে একটি Null character ('\0') দিলে কম্পাইলার বুঝতে পারে এখানেই স্ট্রিংয়ের শেষ। আবার তৃতীয় উদাহরণে অ্যারের উপাদানগুলো আলাদা করে লেখা হয়নি, একসঙ্গে লেখা হয়েছে। এ ক্ষেত্রে কম্পাইলার নিজেই Null character বসিয়ে নেবে। চতুর্থ উদাহরণটিতে যে জিনিসটা ব্যবহার করা হয়েছে তার নাম পয়েন্টার (pointer)।
এবারে প্রোগ্রাম লিখার পালা।
 


#include <stdio.h>     

 int main()     

 {     

     char country[] = {'B', 'a', 'n', 'g', 'l', 'a', 'd', 'e', 's', 'h', '\0'};     

     printf("%s\n", country);     

     return 0;     

 }

এখানে লক্ষ করো যে printf-এর ভেতরে %s ব্যবহার করা হয়েছে স্ট্রিং প্রিন্ট করার জন্য। আর অ্যারেতে শেষের '\0'টা ব্যবহার না করলেও চলে আসলে। বর্তমানের কম্পাইলারগুলো এটি বুঝে নিতে পারে।






#include <stdio.h>     

 int main()     

 {     

     char country[] ={'B', 'a', 'n', 'g', 'l', 'a', 'd', 'e', 's', 'h', '\0', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'o', 'u', 'n', 't', 'r', 'y'};     

     printf("%s\n", country);        

     return 0;     

 }    

 প্রোগ্রাম: ৯.৩  



প্রোগ্রামে স্ট্রিংয়ের ভেতরে এক জায়গায় '\0' থাকায় কম্পাইলার ধরে নিচ্ছে ওখানে স্ট্রিংটা শেষ হয়ে গেছে।

Screenshot_7
 
 
এবারে আমরা একটি প্রোগ্রাম লিখব। একটি স্ট্রিংয়ের ভেতরের সব অক্ষরকে বড় হাতের অক্ষরে (অর্থাৎ capital letter বা uppercase character) রূপান্তর করা। তবে এর জন্য আমাদের একটি জিনিস জানতে হবে।
প্রতিটি অক্ষরের বিপরীতে কম্পিউটার একটি সংখ্যার কোড ব্যবহার করে। সেই কোড অনুযায়ী, 'A'-এর মান হচ্ছে 65, 'B'-এর মান হচ্ছে 66, 'C'-এর মান হচ্ছে 67... এভাবে 'Z'-এর মান হচ্ছে 90 ।
তেমনই 'a' হচ্ছে 97, 'b' হচ্ছে 98 ... এভাবে 'z' হচ্ছে 122 । সুতরাং কোনো ক্যারেক্টার বড় হাতের কি না সেটি আমরা নির্ণয় করতে পারি এভাবে: if(ch >= 'A' && ch <= 'Z') অথবা if(ch >= 65 && ch <= 90) ।
তেমনই ছোট হাতের অক্ষরের জন্য: if(ch >= 'a' && ch <= 'z') অথবা if(ch >= 97 && ch <= 122)  ।
 
এখন কোনো ক্যারেক্টার যদি ছোট হাতের হয়, তবে তাকে বড় হাতের অক্ষরে রূপান্তর করার উপায় কী? উপায় খুব সহজ। একটি উদাহরণ দেখো: char ch = 'c'; ch = 'A' + (ch – 'a'); এখানে যেটি হচ্ছে, প্রথমে ch থেকে 'a' বিয়োগ করা হচ্ছে মানে 'c' থেকে 'a' বিয়োগ (আসলে 99 থেকে 97 বিয়োগ হচ্ছে )। বিয়োগফল 2 ।   এবারে 'A'-এর সঙ্গে যদি ওই 2 যোগ করে দিই তবে সেটি 'C' হয়ে যাবে! এখন প্রোগ্রামটি লিখে ফেলা যাক:
 



#include <stdio.h>     
int main()
{
char country[] = {'B', 'a', 'n', 'g', 'l', 'a', 'd', 'e', 's', 'h'};
int i, length;
printf("%s\n", country);
length = 10;
for(i = 0; i < length; i++) {
if(country[i] >= 97 && country[i] <= 122) {
country[i] = 'A' + (country[i] - 'a');
}
}
printf("%s\n", country);
return 0;
}

এবার আমরা কোনো স্ট্রিংয়ের দৈর্ঘ্য মাপার জন্য একটি ফাংশন লিখব! এটি তেমন কঠিন কিছু নয়। একটি লুপের সাহায্যে স্ট্রিংয়ের প্রতিটি উপাদান পরীক্ষা করতে হবে এবং Null character ('\0') পেলে লুপ থেকে বের হয়ে যাবে অর্থাৎ, '\0' না পাওয়া পর্যন্ত লুপ চলতে থাকবে। আর লুপ যতবার চলবে স্ট্রিংয়ের দৈর্ঘ্যও তত হবে।
 

#include <stdio.h>
int string_length(char str[])
{
int i, length = 0;
for(i = 0; str[i] != '\0'; i++)
{
length++;
}
return length;
}
int main()
{
char c[100];
int length;
while(1 == scanf("%s", c))
{
length = string_length(c);
printf("length: %d\n", length);
}
return 0;
}

ওপরের প্রোগ্রামটায় তোমরা দেখতে পাচ্ছ যে ইনপুট নেওয়ার জন্য scanf ফাংশন ব্যবহার করা হয়েছে এবং স্ট্রিং ইনপুট নেওয়ার জন্য %s ব্যবহৃত হয়েছে। scanf ফাংশনটি যতটি উপাদান ইনপুট হিসেবে নেয়, সেই সংখ্যাটি রিটার্ন করে। while(1 == scanf("%s", c)) লাইনে যেটি ঘটছে তা হলো, যতক্ষণ একটি c-এর নাম scanf দিয়ে ইনপুট নেওয়া হচ্ছে, ফাংশনটি 1 রিটার্ন করছে, আর লুপের ভেতরের কন্ডিশন সত্য হচ্ছে (1 == 1), তাই লুপের কাজ চলতে থাকবে।
আরেকটি জিনিস খেয়াল করো যে c-এর আগে কোন & চিহ্ন ব্যবহার করা হয়নি। তোমরা &c লিখে দেখো প্রোগ্রামটি কী আচরণ করে। তবে %s ব্যবহারের একটি সমস্যা হচ্ছে স্ট্রিংয়ে কোনো হোয়াইটস্পেস ক্যারেক্টার (যেমন: স্পেস, ট্যাব ইত্যাদি) থাকা যাবে না, এমন কিছু পেলে scanf ওই ক্যারেক্টার পর্যন্ত একটি স্ট্রিং ধরে নেয়। যেমন, ইনপুট যদি হয় this is তবে scanf প্রথমে thisকেই স্ট্রিং হিসেবে নেবে, তারপরে যদি আবার scanf ফাংশন কল করা হয়, তবে isকে সে স্ট্রিং হিসেবে ইনপুট নিয়ে নেবে। এই সমস্যা এড়ানোর জন্য আমরা gets ফাংশন ব্যবহার করতে পারি। নিচের উদাহরণটি দেখো:
 

#include <stdio.h>
int main()
{
char ara[100];
while(NULL != gets(ara)) {
printf("%s\n", ara);
}
return 0;
}

এই প্রোগ্রামটিও চলতে থাকবে যতক্ষণ না তুমি ctrl + z (মানে কি-বোর্ডে ctrl ও z একসঙ্গে) চাপো, লিনাক্সের জন্য ctrl + d। ctrl + z বা ctrl + d দিলে gets ফাংশনটি NULL রিটার্ন করে। আরেকটি জিনিস লক্ষ করো যে আমি char ara[100]; ডিক্লেয়ার করে শুরুতেই বলে দিয়েছি স্ট্রিংয়ের সর্বোচ্চ দৈর্ঘ্য হবে 100 ।
আরেকটি ব্যাপার। string_length ফাংশনের ভেতরে আসলে দুটি ভেরিয়েবল ব্যবহার না করলেও চলে। আমরা ফাংশনটি এভাবেও লিখতে পারি:

int string_length(char str[])     
{
int i;
for(i = 0; str[i] != '\0'; i++);
return i;
}


লেখাটি এই খান হতে নেওয়া