Can someone outline the "best practice" (if any!) to handle newline in ANSI-C standard library functions?
I had some confusion with these functions recently related to char array and char pointer. puts(), printf(), strcpy(), strncpy(), memset().
None of these do anything weird with newlines at all.
Quote:
//Some said don't use strcpy() but use strncpy()!!!
Blindly using anything without knowing what it's for or what it does will cause problems, as it has here. strcpy would have worked.
Quote:
1) For unknown reason, sometime I got output:
With the memset() function inserted, I always got the correct output. But, I do not see memset() is combined with these strncpy()/strcpy() very often.
strncpy doesn't want the size of the origin string: It wants the size of the destination buffer.
And len1 is shorter than the origin string, anyway. strlen gives you the length without the NULL terminator, forcing strncpy to cut off the terminator, leaving it copied unterminated showing whatever garbage might have been left behind it. If you'd used strcpy, you would have been safe.
Quote:
2) The 4 puts() are in a row, but sometime they gave extra blank line that seems come from extra newline (especially in the second example), but I read puts() only appends newline at the end.
Again, random garbage left afterwards from a string that didn't get terminated.
Quote:
I must have missed important rules to use these functions.
so I'm asking my question with "best practice" to narrow down my struggle if that is reasonable. Thanks.
You just confused yourself with pointer logic. "=" does not copy the contents of a pointer. It alters the pointer!
str3 ends up pointing to the exact same memory as string1 pointed to.
Last edited by Corona688; 07-12-2018 at 09:19 PM..
Dear All,
I have to develope some C functions in Unix for a Magic program. The original MSE code which compiles the attached C program uses a +z option, but the cc compiler don't know this. The complete command in the compiler script is 'cc -c -Aa +z myfile.c'. The warning message is 'The -z... (4 Replies)
can somebody explain about the ANSI C vs POSIX. say i was using open and fopen, i know that open is POSIX, and fopen is ANSI C. i read that that POSIX is a system call and ANSI C is like a standard library function. wouldn't the fopen function has to call on open function anyway to open any kind... (2 Replies)
Hi,
I am creating a file in Unix using a shell script. The file is getting created in the Unix - ANSI format. My requirement is to convert it to the PC - ANSI format. Can anyone tell me how to do this?
Thanks,
Sunil (0 Replies)
Is it not a healthy practice to mix C and C++ standard I/O functions together
e.g.
string name; // this is a declared instance of the string class in C++
printf("\nPlease enter your name: ");
cin >> name;
I did something similar in a program Im designing, and used it several... (1 Reply)
Hi everybody,
first of all i apologize if my thread's title doesn't make much sense,but i coudn't find a more appropriate name :)
Then i apologize about my question,which probably will sound trivial for you :) :)
I am working on a program which is being tested in Linux but the final target is... (2 Replies)
Hi there
how can i get the result of a command to not give me its error. For example, on certain systems the 'zfs' command below is not available, but this is fine becaues I am testing against $? so i dont want to see the message " command not found" Ive tried outputting to /dev/null 2>&1 to no... (5 Replies)
Hey, I'm completely new at this and I was wondering if there is a way that I would be able to redirect the log files in a directories standard output and standard error into and excel spreadsheet in anyway?
Please remember don't use too advanced of terminology as I just started using shell... (6 Replies)
I need to run a cronjob and in the cronjob I execute a script that if there is an error produces standard error so I do
/RUNMYSCRIPT 2> mylogfile.log
However, if it runs correctly, I don't get a standard error output, I get a standard out output. How do I redirect both standard error and... (2 Replies)
I follow the description of wiki (Lamport's bakery algorithm - Wikipedia, the free encyclopedia), then implement that algorithm in C, but it doesn't work, Starving is still here, is the implementation worry?
Only print out:
Thread ID: 0 START!
Thread ID: 0 END!
Thread ID: 0 START!... (2 Replies)
I have 7 functions those need to be executed as command line inputs, I tried with below code it’s not executing function. If I run the ./script 2 then fun2 should execute , how to initiate that function I tried case and if else also, how to initiate function from command line
if
then... (8 Replies)