Witam.
Mam problem z programem w c, który działa w devc++, lecz gdy odpalam go pod linuxem to już nie. Link do programu(http://www9.zippyshare.com/v/66842078/file.html +plik txt).
Doszedłem do wniosku, że problem polega na usuwaniu znaku końca linii ze stringa, który pobiera z pliku txt, jednak nie wiem jak z tym sobie poradzić. W devc++ funckja wypisuje podane słowo z każdym wyrazem z pliku txt. A pod linuksem wyskakuje tylko jeden wyraz w dodatku nie poprawnie np. <podany wyraz="wyraz">abecadloacz(powinno być bez tego acz na końcu). Najlepiej samemu odpalić i sprawdzić co się dzieję.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define n 30
#include<ctype.h>
#include<time.h>
void usunenter(char* s)
{
char *ptr;
if((ptr = strchr(s, '\n')) != NULL)
{
*ptr = '\0';
}
}
void usunspacje(char* s) //funkcja usuwajaca spacje ze stringa
{
int p = -1, q = 0;
while (s[++p] != '\0') if (s[p] != ' ') s[q++] = s[p];
s[q] = '\0';
}
int main()
{
printf("\nWitaj w programie Palindromy\n");
int p,wyjscie=0;
char p1[2];
while(wyjscie==0)
{ //Menu
printf("\nWybierz operacje, ktora chcesz wykonac\n\
\n1.Generacja palindromow za pomoca slownika\n2.Exit.\n");
scanf("%d",&p);
fgets(p1,2,stdin);
switch(p)
{
case 2:
{
wyjscie=1;
break;
}
case 1:
{
FILE *fp;
int i,j,c,dl,dl2,g,check1,linie=0,p,ilu;
char wyraz[50];
char slownik[50];
char slownik2[50];
char slownik3[50];
char slownik1[50];
char slownik4[50];
char wyraz1[50];
char wyraz2[50];
char razem[50];
char buffer[BUFSIZ];
if ((fp=fopen("p.txt", "r"))==NULL)
{
printf ("Nie mogę otworzyć pliku polish.txt!\n");
exit(1);
}
while (fgets(buffer, sizeof buffer, fp))
{
++linie;
}
rewind(fp);
printf("\npodaj wyraz\n");
scanf("%s",wyraz);
for(g = 0; wyraz[g]; g++)
{
wyraz[g] = tolower(wyraz[g]);
}
dl=strlen(wyraz);
for(i=0;(i<linie)&&fgets(slownik,20,fp);++i)
{
usunenter(slownik);
strcpy(slownik1,slownik);
strcpy(wyraz1,wyraz);
strcat(wyraz1,slownik);
dl2=strlen(wyraz1);
printf("%s",wyraz1);
}
}
default:
{
break;
}
}
} //wyjsice ze switcha
return 0;
}
sformatowanie kodu - fp