Visit The New, Modern Unix Linux Community


C function "strtoull" failing


 
Thread Tools Search this Thread
Top Forums Programming C function "strtoull" failing
# 1  
C function "strtoull" failing

I have a code in which I am passing string "5368709120" to function strtoull() and it should had returned me number 5368709120 but instead it returns me 1073741824 which is incorrect.

What may be the possible cause of this and how to rectify it?

Code:
    typedef unsigned long long    ULL_Type;
    char *numStr = "5368709120";
    ULL_Type            num;

    num = strtoull(numStr, NULL, 10);


Last edited by rupeshkp728; 09-30-2013 at 02:24 PM..
# 2  
MY this looks familiar: C function "strtoull" failing

You are doing yourself and the people who help you a disservice by plastering your question all over the net.

Your problem is: read about how to print an unsigned long long - the printf format string.
This User Gave Thanks to jim mcnamara For This Post:
# 3  
I am not printing the value instead storing it in some variable.
now the value returnd by strtoull is wrong.
# 4  
Quote:
Originally Posted by rupeshkp728
I am not printing the value instead storing it in some variable.
now the value returnd by strtoull is wrong.
Show us the code you used to determine that the value stored in num is 1073741824 rather than 5368709120! Decimal 5368709120 is hexadecimal 0x140000000 and decimal 1073741824 is 0x40000000. So, Jim's guess that you printed the value of num using something like:
Code:
printf("%lu\n", num);

sure seems to fit the symptoms of what you have described.
Please change:
Code:
    num = strtoull(numStr, NULL, 10);

in your code to:
Code:
    num = strtoull(numStr, NULL, 10);
    printf("%llu\n", num);

and let us know what it prints.

Last edited by Don Cragun; 09-30-2013 at 05:07 PM.. Reason: Fix typo.
This User Gave Thanks to Don Cragun For This Post:
# 5  
I printed it in gdb
Code:
(gdb) p strtoull(numStr, 0, 10) $17 = 1073741824

I tried p/u and it still prints the same thing.

Last edited by Scott; 09-30-2013 at 05:27 PM.. Reason: Code tags
# 6  
Quote:
Originally Posted by rupeshkp728
I printed it in gdb
Code:
(gdb) p strtoull(numStr, 0, 10) $17 = 1073741824

I tried p/u and it still prints the same thing.
Check the return value from strtoull...it is better not to assume anything and make sure to include <stdlib.h> header file wherein strtoull is declared and post the entire code if it aint too big...
This User Gave Thanks to shamrock For This Post:
# 7  
Thanks all for the reply.

---------- Post updated at 08:28 PM ---------- Previous update was at 08:21 PM ----------

I am using llu only
printf("Integer of %s is %llu \n", numStr , num);

Output is
Integer of 5368709120 is 1073741824

---------- Post updated at 08:31 PM ---------- Previous update was at 08:28 PM ----------

Breakpoint hit at strtoull():
Code:
(gdb) 
435                     num = strtoull(numStr, NULL, 10);

(gdb) p num
$1 = 140737488347680

(gdb) x/s numStr
0x7fffffffe5a3: "5368709120"

(gdb) p strtoull(numStr, NULL, 10)
$2 = 1073741824

(gdb) p/u strtoull(numStr, NULL, 10)
$3 = 1073741824

Executing the statement:
Code:
(gdb) n

(gdb) p num
$4 = 1073741824

(gdb) p/u num
$5 = 1073741824

Note that when I decrease one character from string i.e. if I pass "536870912" then it shows proper output.
Code:
Intger of 536870912 is 536870912


Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #229
Difficulty: Easy
According to NetMarketShare, in September 2019 Linux had a 2% global market share of the desktop / laptop computer market.
True or False?

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. HP-UX

DLT 7000 tape drive failing with "write error on a record in the index"

HP rp5450 (L2000) running HP-UX 11.11B Using DLT 7000 and DLT 4000 tape drives for nightly full backups Backup jobs created by SAM DLT 7000 cron entry is as follows: 00 2 * * 1-6 /usr/sam/lbin/br_backup DLT FULL Y /dev/rmt/0m /var/sam/graphLCAa17036 root Y 1 N > /var/sam/SAM_br_msgs 2>&1... (1 Reply)
Discussion started by: dreh99
1 Replies

5. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

6. HP-UX

ERROR: more than one instance of overloaded function "vprintf" has "C" linkage

Hi people! I've got this own library: -------------------------------------------- Personal.h -------------------------------------------- #ifdef __cplusplus extern "C" { #endif #include <stdio.h> #include <stdarg.h> #include <string.h> ... (0 Replies)
Discussion started by: donatoll
0 Replies

7. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

8. Solaris

sendto failing "resource temporarily unavailable"

Well, I am not even sure if its failing, cause at the other end I have a select call and it wakes up and reads the data I sent fine. Ok here is the issue, I have a UDP socket(non blocking) through which I push some data to another port. At the other end I have select loop, waiting for this data.... (6 Replies)
Discussion started by: Naanu
6 Replies

9. Programming

How to convert the "select" function into a "poll" function

i have a program using the select function but i want to convert it to poll... how can i do this? thanks in advance... :) (1 Reply)
Discussion started by: rbolante
1 Replies

Featured Tech Videos