You are reading a single comment by @user113695 and its replies. Click here to read the full conversation.
  • In a piece of code I am working on I am trying to count the number of newline characters '\n' (i.e. the number of lines) in a string read from storage via something like the following:

    var c = E.compiledC(`
    // int sum(int, int)
    int sum(int len, unsigned char *data){
      int s = 0;
      while (len--)
        if (*(data++)=='\n') s++;
      return s;
    }
    `);
    
    function readFile(fn) {
      var fb = require("Storage").read(fn);
      var nlines = c.sum(fb.length, E.getAddressOf(E.toString(fb),true));
    //  for (var i=0; i<fb.length; ++i) if (fb[i]=="\n") nlines++;
      return nlines;
    }
    

    Unfortunately my understanding of how the string returned from the require("Storage").read() call is stored in memory is clearly flawed since I am not at all getting the results I am expecting.
    I am reading in a text file that I uploaded to storage via the web ide; the string is read in correctly, as confirmed by outputting it via console.log or using any of the other string functions on it. However, the internal representation of the chunk of memory is clearly not simple ASCII.
    Or is the memory returned by read() simply not contiguous?
    Thanks for any advise,
    Marko

About

Avatar for user113695 @user113695 started