| Deutsch English Français Italiano |
|
<vrpctt$2o6k4$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: DFS <nospam@dfs.com>
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: <vrpctt$2o6k4$1@dont-email.me>
References: <vrd77d$3nvtf$2@dont-email.me> <vrmvoa$giup$2@dont-email.me>
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: <vrmvoa$giup$2@dont-email.me>
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 <stdio.h>
>> #include <stdlib.h>
>> #include <string.h>
>>
>> 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.