Re: Why?? (prog question)
- From: William Gordon Rutherdale <will.rutherdale@xxxxxxxxxxx>
- Date: Tue, 31 Mar 2009 07:48:00 -0400
Polytropon wrote:
I don't want to start a "style debate", but forgive me theTabbing is the worst form of indentation. It is *much* better to use spaces consistently.
following annotations:
1. Use the tab character for indentation. You can set its
length with your favourite editor (e. g. mcedit: F9,
Options, General; joe: ^TD). Don't waste with spaces.
2. The main() function should be declared as
int main(int argc, char *argv[])
or
int main(int argc, char **argv)
Note that it's returning (int). Use this functionality.
3. In case of errors (e. g. incorrect number of parameters)
use fprintf() to stderr, or perror() with the builtin
error handling (e. g. for "file not found" by fopen()).
4. Use the predefined return codes, don't hardcode them.
FreeBSD has EXiT_SUCCESS and EXIT_FAILURE, they're for
maximum compatibility (such as with Linux). There are
more exit codes for differentiation, but they're specific
to FreeBSD, as far as I know.
5. This is highly debatable: Use a good style for { and }.
6. Use delimiters around operators, e. g. buf[strlen(buf) - 1]
instead of buf[strlen(buf)-1]; increases readability.
Here is the program again, with some stylistic modifications
and the "correct" (read: recommended, usual) exit code handling:
/*
* simple prog to join all | very nearly all lines of a text file
* that make up one paragraph into one LONG line. *
* paragraphs are delimiated by a single \n break.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char buf[65536];
if(argc == 1) {
fprintf(stderr, "Usage: %s < file > newfile\n", argv[0]);
exit(EXIT_FAILURE);
}
while (fgets(buf, sizeof buf, stdin)) {
if(*buf == '\n') {
fprintf(stdout, "\n\n");
} else {
buf[strlen(buf) - 1] = ' ';
fputs(buf, stdout);
}
}
return EXIT_SUCCESS;
}
Note that compiling with -Wall (always a good option) doesn't
show any warning.
I read my advices again... makes me sound sooooo old! :-)
-Will
_______________________________________________
freebsd-questions@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: Why?? (prog question)
- From: Polytropon
- Re: Why?? (prog question)
- From: Polytropon
- Re: Why?? (prog question)
- References:
- Why?? (prog question)
- From: Gary Kline
- Re: Why?? (prog question)
- From: Polytropon
- Why?? (prog question)
- Prev by Date: Re: Recovering a GEOM RAID0 array
- Next by Date: Re: Why?? (prog question)
- Previous by thread: Re: Why?? (prog question)
- Next by thread: Re: Why?? (prog question)
- Index(es):
Relevant Pages
|