Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: DFS Newsgroups: comp.lang.c Subject: Re: Suggested method for returning a string from a C program? Date: Sun, 23 Mar 2025 12:29:49 -0400 Organization: A noiseless patient Spider Lines: 71 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sun, 23 Mar 2025 17:29:51 +0100 (CET) Injection-Info: dont-email.me; posting-host="1416cee1c6e1e50fee3ae9def3ab8477"; logging-data="2890372"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX193NVWj39oAohyR16iGVa9j" User-Agent: Betterbird (Windows) Cancel-Lock: sha1:oPdA2pIB+k+hi+PsqwBhqSHuDQ4= Content-Language: en-US In-Reply-To: Bytes: 3064 On 3/22/2025 2:32 PM, Lynn McGuire wrote: > On 3/18/2025 8:38 PM, DFS wrote: >> >> I'm doing these algorithm problems at >> https://cses.fi/problemset/list/ >> >> For instance: Weird Algorithm >> https://cses.fi/problemset/task/1068 >> >> My code works fine locally (prints the correct solution to the >> console), but when I submit the .c file the auto-tester flags it with >> 'runtime error' and says the output is empty. >> >> ------------------------------------------------------------ >> // If n is even, divide it by two. >> // If n is odd, multiply it by three and add one. >> // Repeat until n is one. >> // n = 3: output is 3 10 5 16 8 4 2 1 >> >> >> #include >> #include >> #include >> >> int main(int argc, char *argv[]) >> { >>      int n = atoi(argv[1]); >>      int len = 0; >>      char result[10000] = ""; >>      sprintf(result, "%d ", n); >> >>      while(1) { >>          if((n % 2) == 0) >>              {n /= 2;} >>          else >>              {n = (n * 3) + 1;} >> >>          if(n != 1) >>              { >>                  len = strlen(result); >>                  sprintf(result + len, "%d ", n); >>              } >>          else >>              break; >>      } >> >>      len = strlen(result); >>      sprintf(result + len, "1 "); >>      printf("%s\n",result); >> >>      return 0; >> } >> ------------------------------------------------------------ >> >> Any ideas? >> Thanks > > strdup. >    https://www.geeksforgeeks.org/strdup-strdndup-functions-c/ > > Lynn The main issue, quickly spotted by Keith Thompson, was the program was supposed to read input from stdin. I had it reading from the command line (so no output), and using an int where long was needed (returned some wrong answers). Thanks.