If String is "bad" for me, how do I get the following sketch to get 'good' ?

I am using a ESP-WROOM-32 DevKitV1 and Arduino IDE.

I am terribly sorry if I shouldn’t be posting here. I hope that a mod will understand me and move this where it belongs (hopefully not in the thrash-bin).

I am a newbie when it comes to C, C++, Arduino IDE, ESP32 and so on.

Here is the thing. I’ve read online that String is too big for such a little RAM memory, and that char is better for the memory and for manipulation. I thought that changing from String to char was easy, but boy was I wrong. I find working with String the most simple thing to do in Arduino IDE, but char kills me.

The sketch connects to a WiFi network, using the stored credentials from a .txt file inside the Flash Memory. It works ! How would you optimize it ? Does String do so much harm ?

The sketch will get bigger than this. This is what I am planning to do:

1 - boot ;
2 - read two (2) lines from a file (SSID and Password), if it has values in that file start in Station Mode and serve a webpage (HTML and CSS from inside the flash memory) ;
2.1 - if the file doesn’t exist or it’s empty start in Acces Point Mode with “ESP32AP” name and “password123” as password and serve another webpage(HTML and CSS from inside the flash memory) containing two (2) inputs: SSID and Password and a “Connect” Button
2.2 - when clicking on Button it will save the credentials in the above mentioned file, and restart

#include <SPIFFS.h>
#include <WiFi.h>

String v[2];
 
void setup() {
  
  Serial.begin(115200);

   
  if (!SPIFFS.begin(true)) {
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
 
 
    //---------- Read file
    File fileToRead = SPIFFS.open("/inputs.txt");
 
    if(!fileToRead){
        Serial.println("Failed to open file for reading");
        return;
    }
 
    Serial.println("File Content: ");

    int i = 0;
    while(fileToRead.available()){
        String line= fileToRead.readStringUntil('\n');        
        v[i] = line;
        i++;        
        String string2 = String("Linia ") + i + ": " + line;
        Serial.println(string2);
        Serial.println();      
    }
 
    fileToRead.close();
    
    for(i = 0; i<2; i++) {
        Serial.println(v[i]);
      }

  WiFi.begin(v[0].c_str(),v[1].c_str());  

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }
  Serial.println((String)"Connected to " + v[0] + " with IP addres: " + WiFi.localIP().toString() );
  
  Serial.println(SPIFFS.exists("/inputs.txt"));

}
 
void loop() {}

Your

GeorgeFlorian:
I am using a ESP-WROOM-32 DevKitV1 and Arduino IDE.

does not suffer from

GeorgeFlorian:
...little RAM memory...