Chaîne de caractères la plus longue
#include<stdio.h> #define MAXSIZE 100 /*max size line */ #define END '!' int readLine(char s[], int lim); void copyLine(char dest[], char src[]); /* read the input char and save the char into s return : s[] size */ int readLine(char s[], int lim) { int c; /* char read */ int i; for (i=0; i<lim-1 && ((c=getchar())!=END) && c != '\n'; ++i) { s[i] = c; } if (c=='\n') { s[i] = c; ++i; } s[i] = '\0'; /* to finalize the line */ return i; } /* copy src to dest */ void copyLine(char dest[], char src[]) { int i=0; while ((dest[i] = src[i]) != '\0') { ++i; } } int main(int argc, char** argv) { int l; int max; /* size of the longest line current read */ char line[MAXSIZE]; char longestLine[MAXSIZE]; max = 0; while ((l = readLine(line, MAXSIZE)) > 0) { if (l > max) { max = l; copyLine(longestLine, line); } } if (max > 0) printf("Longest line is : %s", longestLine); return 0; }
Pour finir la saisie, sur une ligne vierge, saisir le caractère "!", paramétrable en changeant la valeur de END en define.
Exécution
$gcc copy.c -o copy $chmod +x copy $./copy azerty azertyuiop azer ! Longest line is : azertyuiop $