स्ट्रिंग मापदंडों के साथ कार्य


11

मेरे मुख्य लूप के अंदर यह स्ट्रिंग है:

String string1;

मेरे पास एक फ़ंक्शन है जो स्ट्रिंग 1 को पैरामीटर के रूप में ले जाएगा, और इसे इस स्ट्रिंग को एसएमएस के रूप में भेजने के लिए उपयोग करेगा।

sendSMS(string1);

यह SendSMS () फ़ंक्शन (मापदंडों के बिना) है:

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

मेरे प्रश्न हैं:

  1. मैं SendSMS में स्ट्रिंग इनपुट पैरामीटर कैसे डालूं?
  2. क्या मुझे SendSMS () के लिए फ़ंक्शन प्रोटोटाइप का उपयोग करने की आवश्यकता है? (ताकि यह तीन बार प्रकट हो, प्रोटोटाइप में 1, घोषणा में 1 और कॉल में एक)। या मुझे मुख्य लूप () से पहले फ़ंक्शन प्रोटोटाइप का उपयोग करने की आवश्यकता नहीं है?

जवाबों:


10
  1. बस बदल दो

    void sendSMS()

    सेवा

    void sendSMS(const String& thisIsAString)

    आप तब फ़ंक्शन के अंदर पैरामीटर तक पहुंच सकते हैं thisIsAString

  2. नहीं, आपको किसी प्रोटोटाइप की आवश्यकता नहीं है।


8
मैं इसके बजाय स्ट्रिंग को संदर्भ द्वारा पारित करने की सलाह दूंगा, कुछ भी नहीं करने के लिए अतिरिक्त कोड से बचने के लिए (कॉपी-कंस्ट्रक्टर, विध्वंसक): void sendSMS(String& thisIsAString)या इससे भी बेहतर, एक कास्ट संदर्भ, यदि स्ट्रिंग तर्क को फ़ंक्शन द्वारा संशोधित नहीं किया जाना है:void sendSMS(const String& thisIsAString)
jfpoilpret 17

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)

आप अपने कोड में myinputstring का उपयोग कर सकते हैं।


यह केवल दूसरे उत्तर का दोहराव है।
सेम्पाइस्कुबा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.