User:Fabien Labeyrie/C loops: Difference between revisions
No edit summary |
No edit summary |
||
(6 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
[[Category:2011_P1.01]] | [[Category:2011_P1.01]] | ||
__NOTOC__ | __NOTOC__ | ||
==C loops== | __NOEDITSECTION__ | ||
<div style="width: 600px; font-family:Arial"> | |||
==<span style="color:#0B0080">C loops</span>== | |||
<hr style="height:5px; margin-top:-15px; background-color:#FFF"> | |||
<br /> | |||
====fgets function==== | ====fgets function==== | ||
Line 54: | Line 58: | ||
The following code will replace any non-punctuation character by a space, using the ''ispunct'' function that tells if a character is a punctuation mark or not. | The following code will replace any non-punctuation character by a space, using the ''ispunct'' function that tells if a character is a punctuation mark or not. | ||
<source> | <source lang="C"> | ||
#include "stdio.h" | #include "stdio.h" | ||
#include "string.h" | #include "string.h" | ||
Line 67: | Line 71: | ||
linelen = strlen(line); | linelen = strlen(line); | ||
for (i=0; i<linelen; i++) { | for (i=0; i<linelen; i++) { | ||
if (ispunct(line[i])) { | |||
printf("%c ", line[i]); | |||
} | |||
else { | |||
printf(" "); | |||
} | |||
} | } | ||
printf("\n"); | |||
} | } | ||
return 0; | return 0; | ||
} | } | ||
</source> | </source> | ||
<br /> | |||
====Results==== | |||
The output is masterpiece of [http://en.wikipedia.org/wiki/ASCII_art ASCII art] : | |||
<source lang="C"> | |||
# " . " # " . " # ( ) | |||
{ [ ] ; ; ; ( ( | |||
, , ) ) { = ( ) ; ( | |||
= ; < ; + + ) { ( ( [ ] ) ) { ( | |||
" % " , [ ] ) ; } { ( " " ) ; } | |||
} ( " \ " ) ; } ; } | |||
</source> | |||
</div> |
Latest revision as of 22:05, 6 April 2011
C loops
fgets function
The following code output the length of each line, but it actually outputs lines that are one character longer. It might be that the hard return character is taken into account.
#include "stdio.h"
#include "string.h"
#define MAXLINE 1000
int main () {
int i=0;
int linelen;
char line[MAXLINE];
while (fgets(line, MAXLINE, stdin)) {
linelen = strlen(line);
printf("line is %d characters long\n", linelen);
}
return 0;
}
Line numbering
Using the padding with %0?d (the ? stands for how many zeros you want to add in front of your numbering) will help us to number the lines in an output.
#include "stdio.h"
#include "string.h"
#define MAXCHAR 200
int main () {
int i=0;
int linelen;
char line[MAXCHAR];
while (fgets(line, MAXCHAR, stdin)) {
linelen = strlen(line);
printf("%02d %s", i, line);
i++;
}
return 0;
}
Punctuation only filter
The following code will replace any non-punctuation character by a space, using the ispunct function that tells if a character is a punctuation mark or not.
#include "stdio.h"
#include "string.h"
#define MAXLINE 1000
int main () {
char line[MAXLINE];
int linelen;
int i;
while (fgets(line, MAXLINE, stdin)) {
linelen = strlen(line);
for (i=0; i<linelen; i++) {
if (ispunct(line[i])) {
printf("%c ", line[i]);
}
else {
printf(" ");
}
}
printf("\n");
}
return 0;
}
Results
The output is masterpiece of ASCII art :
# " . " # " . " # ( )
{ [ ] ; ; ; ( (
, , ) ) { = ( ) ; (
= ; < ; + + ) { ( ( [ ] ) ) { (
" % " , [ ] ) ; } { ( " " ) ; }
} ( " \ " ) ; } ; }