printf and imaxdif_t


 
Thread Tools Search this Thread
Top Forums Programming printf and imaxdif_t
# 1  
Old 08-17-2006
printf and imaxdif_t

i was playing with maxint stuff when i found that i could not find a propper way to do
a printf() auf a imaxdiv_t. since nobody seems to use it google found nothing.
i tried to find a PRIxy code but no success.

example:

#include <stdio.h>
#include <inttypes.h>

int main()
{
imaxdiv_t res;
res=imaxdiv(1234,10);
printf("res=%" PRIdMAX "\n",res);
// printf("res=%lld\n",res);
return 0;
}
gcc -Wall imaxdiv.c
warning: format ‘%lld' expects type ‘long long int', but argument 2 has type ‘imaxdiv_t'

is there any why to printf() without warning ?
what is the way the inventor had in mind ?

Note: imaxdit_t is actualy a struct
typedef struct
{
long long int quot; /* Quotient. */
long long int rem; /* Remainder. */
} imaxdiv_t;
# 2  
Old 08-17-2006
imaxdiv is the same function (idea) as div - it just uses the largest possible integer on the platform. Use lldiv if this function gives you heartburn.

You don't print the result struct, you print either the remainder or the quotient.
imaxdiv_t is platform specific - it returns the largest available integer on your platform, and that is what gcc is complaining about, because it is not necessarily long long. If sizeof says quot is a long long on your platform, then just cast. I'm thinking it may not be.

The idea behind imaxdiv was to provide a "portable largest possible integer range implementation of div for any platform." It is part of C99.

Last edited by jim mcnamara; 08-17-2006 at 10:40 AM..
# 3  
Old 09-01-2006
so the only solution to write something like a compartible solution is to write:

printf("res=%" PRIdMAX ".%"PRIdMAX " \n", res.quot,res.rem);
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

printf quirk

Hi, Could anyone explain me the logic behind the following program's output? int main() { printf("%d\n", printf("%d %d", 2, 2) & printf("%d %d", 2, 2)); printf("%d\n", printf("%d %d\n", 2, 2) & printf("%d %d\n", 2, 2)); } Ans: 2 22 23 2 2 2 2 4 (2 Replies)
Discussion started by: royalibrahim
2 Replies

2. Shell Programming and Scripting

Printf statement

The printf statement pay_amount=$(printf "%013.3f" "$4") working perfectly at one path(xxx/home/rsh) and showing error (printf: 216.000: invalid number) at another path(/opt/xxxx/xxxx). what will be the reason? thanks in advance (4 Replies)
Discussion started by: reeta_shri
4 Replies

3. UNIX for Dummies Questions & Answers

Qsub and printf

Hello, I have some issue with qsub and the standard output : I launch a script that "echoes" the string "abc" and then executes a C program in which I print informations with the printf function ; the .o file contains "abc" but not the information displayed by printf. I also tried... (0 Replies)
Discussion started by: Shaderw
0 Replies

4. Shell Programming and Scripting

find + printf help

Hi, I have a scripting assignment for an intro to linux class and I'm really confused about how to do something seemingly simple. I am supposed to Print the name of each file in the /data/dir16/subdir1 directory in the following format: "My name is: bin" The desired output example looks like:... (1 Reply)
Discussion started by: danschmidt
1 Replies

5. UNIX for Dummies Questions & Answers

printf when used for different processes

I am playing with function fork() (creating few processes)and trying to put some output (with process id,child id and so on) to the shell and sometimes i get output for 2 proccesses mixed up on same line. sometimes I would get something like this... myShell$ ./a.out proccess1 ... (2 Replies)
Discussion started by: joker40
2 Replies

6. Programming

working of printf()

hello all, i came accross an aptitude question .. int main() { int a = 10, b = 20, c = 30; printf("%d\t%d\t%d"); } it gives output 30 20 10 what is the reason of such behaviour of printf(). thank you. (7 Replies)
Discussion started by: zius_oram
7 Replies

7. Shell Programming and Scripting

Printf problem

I am having a major problem with printf, The more I pad it, the less I see :( The problem is in the first function, report Am I ruining output somewhere? I wont print out the names propely, it cuts them off or deletes them completely :( #!/bin/bash report() { printf "%-10s" STUD# ... (2 Replies)
Discussion started by: L0ckz0r
2 Replies

8. UNIX for Dummies Questions & Answers

Need help with printf

Hi, I have just completed my first script (:D) and now i just need to format it with printf. This is what I have: #!/bin/ksh TOTB=0 TOTF=0 TOTI=0 HOST=`hostname` echo " FSYSTEM BLKS FREE INUSE MOUNTEDON" df -m | grep -v ":"|grep -v Free|grep -v "/proc"| while read FSYSTEM... (2 Replies)
Discussion started by: compan023
2 Replies

9. Shell Programming and Scripting

printf

How to print output in following format? A..................ok AA................ok AAA..............ok AAAAAA........ok "ok" one under one (4 Replies)
Discussion started by: mirusnet
4 Replies

10. Programming

printf

What is the output of the following program considering an x86 based parameter passing sequence where stack grows towards lower memory addresses and that arguments are evaluated from right to left: int i=10; int f1() { static int i = 15; printf("f1:%d ", i); return i--; } main() {... (2 Replies)
Discussion started by: arunviswanath
2 Replies
Login or Register to Ask a Question