স্ট্রিং প্যারামিটার সহ ফাংশন


11

আমার মূল লুপের ভিতরে এই স্ট্রিং রয়েছে:

String string1;

আমার একটি ফাংশন রয়েছে যা স্ট্রিং 1 পরামিতি হিসাবে নেবে এবং এসএমএস হিসাবে এই স্ট্রিংটি প্রেরণে এটি ব্যবহার করবে।

sendSMS(string1);

এটি সেন্ড এসএমএস () ফাংশন (পরামিতি ছাড়াই):

void sendSMS()
{ sms.beginSMS(remoteNumber);
  sms.print(finalstr);
  sms.endSMS();
  lcd.setCursor(0, 0);
  lcd.print("Message sent!");
  delay(10000); 
}

আমার প্রশ্নগুলি হ'ল:

  1. আমি সেন্ড এসএমএসে স্ট্রিং ইনপুট প্যারামিটারটি কীভাবে দেব?
  2. আমাকে কী সেন্ড এসএমএস () এর জন্য কোনও ফাংশন প্রোটোটাইপ ব্যবহার করতে হবে? (যাতে এটি তিনবার প্রদর্শিত হয়, প্রোটোটাইপটিতে 1, ঘোষণায় 1 এবং কলটিতে একটি)। বা প্রধান লুপ () এর আগে আমার ফাংশন প্রোটোটাইপ ব্যবহার করার দরকার নেই?

উত্তর:


10
  1. শুধু পরিবর্তন

    void sendSMS()

    প্রতি

    void sendSMS(const String& thisIsAString)

    তারপরে আপনি সাথে ফাংশনের অভ্যন্তরে প্যারামিটারটি অ্যাক্সেস করতে পারেন thisIsAString

  2. না, আপনার প্রোটোটাইপ লাগবে না।


8
আমি বরং স্ট্রিংকে রেফারেন্স দিয়ে পাস করার পরামর্শ দিচ্ছি, অতিরিক্ত কোডটি কোনও কিছুর জন্য কার্যকর করা উচিত নয় (কপি-কনস্ট্রাক্টর, ডেস্ট্রাক্টর): void sendSMS(String& thisIsAString)বা আরও ভাল, একটি কনস্ট রেফারেন্স, যদি স্ট্রিং আর্গুমেন্টটি ফাংশনটি সংশোধন না করা হয়:void sendSMS(const String& thisIsAString)
jfpoil ব্যাখ্যা

2

আমি আবার কখনও স্ট্রিং ব্যবহার না করার জন্য বলব। কোডটি বড় হয়ে যাওয়ার পরে এবং মেমরির ব্যবহারের সমালোচনা হবে যখন আপনি একটি মৃতের শেষ হবেন। আমি জানি এটি আরও সুবিধাজনক, তবে চর অ্যারে শট দিন। কিছুটা এইরকম:

bool sendSMS(int remoteNumber, char *finalstr){
  bool isFinished = 0;
  sms.beginSMS(remoteNumber);
  for (int i=0;i<sizeof(finalstr);i++){
      sms.print(finalstr);
  }
  sms.endSMS();
  lcd.setCursor(0, 0);
  lcd.print("Message sent!");
  delay(10000);
  isFinished = 1;
  return isFinished;
}

আমি ফাংশনটি বুলে পরিবর্তন করেছি। এর অর্থ হল আপনি এটি যদি কোনও বিবৃতিতে ব্যবহার করতে পারেন, যেখানে আপনি আপনার কোডটি চালিয়ে যাওয়ার আগে এটি সম্পূর্ণ করতে চান।

অ্যারের জন্য আপনাকে নিজের জন্য মেমরি বরাদ্দ করতে হবে; এটি এইভাবে ঘোষণা করুন:

char stringArray[33] = {'\0'};

এখানে, আমি ডেটা জন্য 32 বাইট এবং অক্ষরের জন্য একটি অতিরিক্ত বাইট বরাদ্দ করি যার অর্থ "স্ট্রিংয়ের সমাপ্তি" (এটি \ 0)।


0

তুমি বদলাতে পারো

void sendSMS()

প্রতি

void sendSMS(String myinputstring)

আপনি আপনার কোডে মাইনপুটসারিং ব্যবহার করতে পারেন।


এটি অন্য উত্তরের কেবল একটি পুনরাবৃত্তি।
sempaiscuba
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.