Visit The New, Modern Unix Linux Community


C function "strtoull" failing


 
Thread Tools Search this Thread
Top Forums Programming C function "strtoull" failing
# 8  
What platform are you on...OS/hardware 32 or 64 bits? and insert the statement below into your source...compile it run it and post its output here...
Code:
printf("sizeof ULL is %d bytes\n", sizeof(ULL_Type));

This User Gave Thanks to shamrock For This Post:
# 9  
I am using 64 bit version of suse.
Code:
# uname -m
x86_64

Output of printf is:
Code:
sizeof ULL is 8 bytes


Last edited by rupeshkp728; 10-01-2013 at 02:30 PM..
# 10  
There's something goofy in your program so post it here so others can look at it...as the max value of ULL "18446744073709551615" is way bigger than "5368709120" so im not sure how you are getting wrong results...
This User Gave Thanks to shamrock For This Post:
# 11  
This is the program.
I have made small changes to make it look clear
Code:
int main(int argc, char *argv[])
   {
    unsigned long long int intValue;

    if(atoi(argv[2]) == 1)
    {   
        intValue = strtoull((const char *)argv[1], 0, 10 );
    }
    else
    {
//  ...
    }

    printf("intValue of %s is %llu \n", argv[1], intValue);

    return 0;
    }

Output is
Code:
# ./str32_new "5368709120" 1
intValue of 5368709120 is 1073741824

Code:
# ./str32_new "536870912" 1
intValue of 536870912 is 536870912

My OS is 64 bit suse.
# 12  
If you had posted a complete yet minimal, compilable program which reproduces the issue, it is likely that this thread would have been resolved long ago.

Regards,
Alister

---------- Post updated at 03:19 PM ---------- Previous update was at 02:54 PM ----------

jim_mcnamara and don_cragun in posts #2 and #4, respectively, correctly deduced from the nature of the numbers involved that a long long was left-truncated into an integer. However, their responses were handicapped by not having access to a complete program.

Had your original post been more forthcoming, either of them would have seen immediately that the truncation was not caused by a printf bug but by incomplete headers.

You need to include the correct headers so that the compiler doesn't default to implicit function prototypes which treat arguments and return values as integers.

What you are seeing is the result of strtoull's return value taken as an integer before assignment to intValue (as if there were a cast operation there). There are surely other bugs just waiting to bite.

Consult the manual pages of each library function to learn which headers must be included.
Also, you should enable compiler warnings; they would have pointed this out to you.

Regards,
Alister

Last edited by alister; 10-01-2013 at 04:25 PM..
This User Gave Thanks to alister For This Post:
# 13  
I had not included stdlib.h.
Including it resolves the issue.

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

Test Your Knowledge in Computers #452
Difficulty: Medium
San Francisco has a Linux-based traffic controller computer that meets the latest Advanced Transportation Controller (ATC) standards.
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