Funkcja operująca na dwóch tekstach w C

0

Mam do napisania taki program w C "Dane są 2 teksty. Napisz funkcję znajdującą ostatnie wystąpienie dowolnego ze znaków tekstu drugiego w tekście pierwszym.". Póki co myślałam, że ogarnęłam jak wpisać tekst z pliku do tablicy, ale po wypisywaniu jej na ekran dostaję jakieś śmieci niezwiązane z plikiem. Ktoś wie co jest źle i może mnie pokierować dalej?

0
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE 256
#define MAX_LINES 200
//Dane są 2 teksty. Napisz funkcję znajdującą ostatnie wystąpienie dowolnego ze znaków tekstu drugiego w tekście pierwszym.


FILE *fd, *ff;

int main()
{

	int i,len;
	char *tekst1[MAX_LINES],bufor[MAX_LINE],*tekst2[MAX_LINES];
	
	if(!(fd=fopen("DANE1.txt","r"))) 
  {
    printf("Blad otwarcia zbioru\n");
    exit(2);
  }
  if(!(ff=fopen("DANE2.txt","r"))) 
  {
    printf("Blad otwarcia zbioru\n");
    exit(2);
  }
  
  while(i<MAX_LINES && fgets(bufor,MAX_LINE,fd))
  { 
    len=strlen(bufor); 
    bufor[len-1]='\0';
    if(!(tekst1[i]=(char*)malloc((unsigned)len)))
    {
      printf("Brak pamieci\n");
      exit(3);
    }
    strcpy(tekst1[i],bufor);
    i++;
  }
  
  while(i<MAX_LINES && fgets(bufor,MAX_LINE,ff))
  { 
    len=strlen(bufor); 
    bufor[len-1]='\0';
    if(!(tekst2[i]=(char*)malloc((unsigned)len)))
    {
      printf("Brak pamieci\n");
      exit(3);
    }
    strcpy(tekst2[i],bufor);
    i++;
  }
  
  for(i=0;i<MAX_LINES;i++)
  {
	  printf("%c\n",tekst1[i]);
  }

fclose(fd);
fclose(ff);
	
}
0

Strlen zwraca ci długość stringa bez znaku '\0'. Poza tym nie czyścisz żadnej z tych tablic nigdy, wiec wystarczy ze pierwsza linijka jest dłuższa od drugiej i juz masz problem. Każdorazowo przed przeczytaniem linijki z pliku użyj bzero lub memset aby wyczyścić bufor.

0

W formatce do printf masz %c, czyli wydrukowanie pojedynczego znaku - użyj %s, aby wydrukować łańcuch znaków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1