Created
March 18, 2022 12:54
-
-
Save lbarqueira/1be0935d4d9f5d85b1457236f4d94bff to your computer and use it in GitHub Desktop.
C programming exercise: Read lines of text and show the largest
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Ler linhas de texto e mostrar a maior | |
*/ | |
/* | |
Ler um conjunto de linhas de texto e escrever a mais comprida (linhas terminam com '\n' ou EOF) | |
*/ | |
/* ----> slide 30/37 aula 05 <------- */ | |
#include <stdio.h> | |
#define MAX_CHARS 100 | |
int lelinha(char s[], int lim); | |
void copia(char destino[], char origem[]); | |
int main() | |
{ | |
int comprimento; | |
int max = 0; | |
/* Vou lendo para esta string (o meu buffer) */ | |
char linha[MAX_CHARS]; | |
/* Aqui vou guardando a maior das linhas lidas ate ao momento */ | |
char maiscomprida[MAX_CHARS]; | |
comprimento = lelinha(linha, MAX_CHARS); | |
while (comprimento > 0) | |
{ | |
if (comprimento > max) | |
{ | |
max = comprimento; | |
copia(maiscomprida, linha); | |
} | |
comprimento = lelinha(linha, MAX_CHARS); | |
} | |
if (max > 0) | |
printf("%s\n", maiscomprida); | |
return 0; | |
} | |
int lelinha(char s[], int lim) | |
{ | |
int c, i; | |
for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; i++) | |
s[i] = c; | |
s[i] = '\0'; | |
printf("O comprimento e: %d\n", i); | |
return i; | |
} | |
void copia(char destino[], char origem[]) | |
{ | |
int i; | |
for (i = 0; origem[i] != '\0'; i++) | |
{ | |
destino[i] = origem[i]; | |
} | |
destino[i] = '\0'; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment