Sponsored Content
Full Discussion: Problem with Sprintf
Top Forums Programming Problem with Sprintf Post 302464902 by DGPickett on Thursday 21st of October 2010 09:46:28 AM
Old 10-21-2010
Yes, never lie to yourself, especially! Smilie

Quote:
Originally Posted by Corona688
It's passed by reference either way.
Code:
#include <stdio.h>

void function(char arr[60])
{
        printf("arr=%p\n", arr);
}

int main(void)
{
        char buf[60];

        printf("buf=%p\n", buf);
        function(buf);
}

Code:
 $ ./a.out
buf=0xbf8d06c8
arr=0xbf8d06c8
$

All giving a function parameter an array type does is stop code in the function from modifying the pointer value. Considering making a pointer copy they can modify is the first thing done in this function though, they might as well make it a pointer and be done with it.


---------- Post updated at 09:27 AM ---------- Previous update was at 09:09 AM ----------




Type warnings:

You should match your subroutines to prototypes, usually by using the #include lines in man 2 xxx, or for main, explicitly say it returns int. For instance, with #include <strings.h>, strchr() is know to return char* not the default int, which is a type violation.

For your own subroutines, prototype them up top, if linked in your own #include "my_include_make_dir_or_minus_I_dir_relative_path_to_file". If they are in this file, you can use my favorite PASCAL cheat: declare/define them above main() or above wherever they are called, so you do not have to sync the prototype to any argument mods.

Remember boolean is int, so for instance, when you check to ensure your malloc succeeded:
Code:
if ( !(cptr=malloc(...)))

should be:
Code:
if ( !(int)(cptr=malloc(...)))

or:
Code:
if ((char*)NULL != (cptr=malloc(...)))

(I like putting the smaller and more constant operand on the left for easy reading.)


Quote:
Originally Posted by ramkrix
Thank you Corona and DGpicket. As mentioned, I allocated instr with instr[100] and it workd now.. Thank youSmilie

---------- Post updated at 11:12 AM ---------- Previous update was at 11:08 AM ----------

One more question. How to eliminate the warnings here? I have included all necessary header files in "fnhash.c" and the below is my makefile:


Code:
ganesh@ubuntu:~/my_programs/c$ cat hashmake
main : main.o fnhash.o
    gcc -Wall -g main.o fnhash.o -o main
main.o : fnhash.h main.c
    gcc -Wall -g -c main.c
fnhash.o : fnhash.c fnhash.h
    gcc -Wall -g -c fnhash.c

However I'm getting those warnings.
Thanks,
Ramkrix

For instance, my "man 2 exit" says exit() needs: #include <stdlib.h>
 

10 More Discussions You Might Find Interesting

1. Solaris

problem with sprintf snprintf in Solaris

******************************** Following is not the real issue. The issue is with popen. Plz continue forward with the thread to get a better picture. ******************************** Hi, I am working on a customised ftp application. In it we have used sprintf to store a UNIX command... (7 Replies)
Discussion started by: diganta
7 Replies

2. Programming

sprintf function

Hi, Can someone help me to figure out whether this code is to write file to /tmp/TIMECLOCK directory or just to asign a variable with "/tmp/TIMECLOCK/name.log_copy.pid" as the string? I am looking into an old C program and could not figure out where in the code that creates... (1 Reply)
Discussion started by: whatisthis
1 Replies

3. Shell Programming and Scripting

ksh scripting sprintf

is there any sprintf function in korn shell scripting, or anything similar to sprintf? (2 Replies)
Discussion started by: gfhgfnhhn
2 Replies

4. Programming

equivalent of sprintf in C++

Hi My requirement is to convert the following to C++ char buffer; sprintf(buffer,"%s %-50s %6s %-6d %s\n",a.substr(0,5),a.substr(10,20)) Since the buffer is of varying length, i cannot hardcode the value as 90. i would like to convert the buffer to string object so that it can receive any... (1 Reply)
Discussion started by: dhanamurthy
1 Replies

5. Shell Programming and Scripting

sprintf result on perl

Hello, In perl lang, I have create a string (@str) by sprintf but unfortunately when program printed it out, only I could saw a number like 1. Certainly printf doesn't problem. How I can convert a string that are result of sprintf to a common string format??! Thanks in advance. PLEASE HELP ME. (2 Replies)
Discussion started by: Zaxon
2 Replies

6. Shell Programming and Scripting

printf vs sprintf - perl

I would like to assign the output of printf to a variable in perl , it give me back a "1" instead of the time. How can I stuff the variable with what printf returns? Here is my code: #!/usr/bin/perl $time = localtime(time);... (3 Replies)
Discussion started by: Dabheeruz
3 Replies

7. Shell Programming and Scripting

Detect sprintf and fprintf bad use

Hello again, I don't know about regexp so I throw this question here: How can I detect files where, for example: sprintf (var1, "hello %s %s", sub1); The problem here is that we have 2 %s and only a variable. Or... the inverse: sprintf (var1, "hello %s %s", sub1, sub2, sub3,...subn); ... (2 Replies)
Discussion started by: albertogarcia
2 Replies

8. Shell Programming and Scripting

Problem with awk awk: program limit exceeded: sprintf buffer size=1020

Hi I have many problems with a script. I have a script that formats a text file but always prints the same error when i try to execute it The code is that: { if (NF==17){ print $0 }else{ fields=NF; all=$0; while... (2 Replies)
Discussion started by: fate
2 Replies

9. Programming

How to right pad with zeros using sprintf?

I need to right-pad with zeros a string by using (s)printf. I looked up the manual and tried with printf("%-19s", buffer); which right-pad the string with spaces. So I tried printf("%019s", buffer); which left-pad the string with zeros. So I tried both printf("%-019s", buffer);... (9 Replies)
Discussion started by: emitrax
9 Replies

10. UNIX for Dummies Questions & Answers

Join with awk using sprintf

Hi, Trying to join 2 files with awk (file1 has variable number of fields; file 2 has constant number of fields) file1: hook1|AA|BB|CC|DD hook2|EE|FF file2: hook1|11|22 hook2|33|44 hook3|55|66 output: hook1|11|22|AA|BB|CC|DD hook2|33|44|EE|FF hook3|55|66 What I tried so far:... (3 Replies)
Discussion started by: beca123456
3 Replies
All times are GMT -4. The time now is 07:59 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy