Ajuda num exercisio de C

eduino

Power Member
Boas eu ando a fazer um exercisio de C que diz o seguinte :
[FONT='Arial','sans-serif']
[FONT='Arial','sans-serif'][FONT='Arial','sans-serif']Construa uma função (e so uma função) que receba um apontador para um ficheiro de texto (que foi aberto antes da função ter sido chamado) e uma string.[/font]
[FONT='Arial','sans-serif'][/font]
[FONT='Arial','sans-serif']A função deve ler uma linha de ficheiro (se o ficheiro foi aberto com sucesso, é garantido que ela existe) e preencher (na forma de uma string) a linha lida com maior número de caracteres.[/font]
[FONT='Arial','sans-serif']Não esqueça que quando se passa uma array para uma função, ao alterar esse array, dentro da função o original é também alterado.[/font]
[FONT='Arial','sans-serif']O protótipo da função é:[/font]
Void LinhaMaior (FILE* pFile, char strresult[]);

neste momento o codigo que eu tenho é este!
[/font]
Código:
void BiggerLine( FILE *pFile,char strresults[]);
char linha [1000];
int cntletras = 0;
int cntpalavras = 1;
int i = 0;
while ((fgets strresults[],1000,pFile))!=NULL) {
for (char;strresults[i] ='\0';i++) {
if (isalpha(strresults[i]))
cntletras ++;
}
Alguem pode-me ajudar nisto pr favor?
obrigado!
 
"e preencher (na forma de uma string) a linha lida, com maior número de caracteres."

Não percebi. Tem que se ler a 1ª linha para uma string e substituí-la por uma string maior?
 
Então basta fazer um strlen às strings que se vai lendo:

Código:
#include <stdio.h>
#include <string.h>

#define MAX 500

int main() {
    FILE *fp;
    char str[MAX];
    char maior[MAX]="";
    int numlinha=0, linha;
    fp = fopen("ficheiro.txt","r");
    if (!fp)
       exit(1);
    while (fgets(str,sizeof(str),fp)!=NULL) {
          if (strlen(str)>strlen(maior)) {
             strcpy(maior,str);
             linha=numlinha;
             }
          numlinha++;
          }
    printf("Maior linha:\n%d: %s\n",linha+1,maior);
    return 0;
}
 
usando o codigo que eu tenho achas que daria para fazer alguma coisa! tenho que obrigatoriamente usar

void BiggerLine( FILE *pFile,char strresults[]);

Desculpa pelo incomodo
 
Estás a fazer contas desnecessárias uma vez que existe a função strlen que devolve o comprimento da string.

Código:
[FONT=monospace]void BiggerLine(FILE* pFile, char strresults[]) {
    char str[MAX];
    strcpy(strresults,"");
    int numlinha=0, linha;
    if (!fp)
               exit(1);
    while (fgets(str,sizeof(str),fp)!=NULL) {
          if (strlen(str)>strlen(strresults)) {
             strcpy(strresults,str);
             linha=numlinha;
             }
          numlinha++;
          }
    printf("Maior linha:\n%d: %s\n",linha+1,maior);
}[/FONT]
 
Back
Topo