Skip to content

Instantly share code, notes, and snippets.

@lbarqueira
Created March 18, 2022 12:54
Show Gist options
  • Save lbarqueira/1be0935d4d9f5d85b1457236f4d94bff to your computer and use it in GitHub Desktop.
Save lbarqueira/1be0935d4d9f5d85b1457236f4d94bff to your computer and use it in GitHub Desktop.
C programming exercise: Read lines of text and show the largest
/*
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