সি ভাষার string.h হেডার ফাইলের strcmpi, strlwr, strupr, strrev ইত্যাদি নন-স্ট্যান্ডার্ড ফাংশনগুলো উইন্ডোজে কোডব্লকসে কাজ করলেও উবুন্টুতে কাজ করছে না। এখন কী করা যেতে পারে? একটু মতামত আশা করছি।

asked 12 Apr, 08:16

Mehedi%20Hasan%20Mubin's gravatar image

Mehedi Hasan Mubin
212

edited 12 Apr, 08:33

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
48618


সি মেশিন ইনডিপেন্ডেন্ট ভাষা নয়। তাই এক প্লাটফর্মের কোড (ANSI স্ট্যান্ডার্ড মেনে চললে অন্য কথা) অন্য প্লাটফর্মে কাজ করবে না। নন-স্ট্যান্ডার্ড ফাংশনগুলো অন্য প্লাটফর্মে কাজ করাতে চাইলে ওই প্লাটফর্মের জন্য তৈরি বিশেষ ফাংশন ব্যবহার করতে হবে।

strcmpi এর বদলে strcasecmp ব্যবহার করা যায় সম্ভবত। বাকিগুলো (সবকটিই) একটু চেষ্টা করলেই নিজে তৈরি করা যায়। একটু খুঁজলেই এ ব্যাপারে সাহায্য পাওয়া যাবে। তৈরি করা ফাংশনও পাওয়া যায়। তবে নিজে তৈরি করার মজাই আলাদা।

permanent link

answered 12 Apr, 08:56

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
48618

edited 17 Apr, 05:52

কোডব্লকস উবুন্টুতে যে কম্পাইলার ব্যবহার করছে gcc, তা এই নন - স্ট্যান্ডার্ড স্ট্রিং ফাংশনগুলো সাপোর্ট করে না। strcmpi এর জন্য gcc সাপোর্টেড ফাংশন হচ্ছে strcasecmp। অন্যগুলোর কোন পরিবর্তিত ফাংশন নেই। নিজেকে তৈরি করে নিতে হবে। এভাবে ইম্প্লিমেন্ট করা যেতে পারে ফাংশনগুলো:

#include <stdio.h>
#include <string.h> // For strlen()
#include <ctype.h> // For toupper() and tolower()

char *strlwr(char *str){
    unsigned char *sp = (unsigned char *)str;

    while(*sp){
        *sp = tolower(*sp);
        sp++;
    }

    return str;
}

char *strupr(char *str){
    unsigned char *sp = (unsigned char *)str;

    while(*sp){
        *sp = toupper(*sp);
        sp++;
    }

    return str;
}

char *strrev(char *str){
    int len = strlen(str);
    int i;
    char tmp;

    for(i = 0; i < (len / 2); i++){
        tmp = str[i];
        str[i] = str[len - 1 - i];
        str[len - 1 - i] = tmp;
    }

    return str;
}

int main(){
    char str[10] = "Hello";

    printf("%s\n", strlwr(str));
    printf("%s\n", strupr(str));
    printf("%s\n", strrev(str));

    return 0;
}
permanent link

answered 12 Apr, 09:13

Ashfaqur%20Rahman's gravatar image

Ashfaqur Rahman
7839

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:

×390
×31
×3

question asked: 12 Apr, 08:16

question was seen: 125 times

last updated: 17 Apr, 05:52