caute, potrebujem pomoc, chcem zistit velkost pola, cize pamat alokovanu tomuto poli, viem ze sa to da takto:
sizeof(pole) a vrati mi pocet bajtov. tu je kod:
# include<stdio.h>
void cisti(void);
void najdi_zmaz(char *s, char *s1, int u);
int main(void)
{
FILE *f;
char str[255],*s1,*p_d;
int x=0,y,z,u,pom=0,pocet=0,lol;
if ((f=fopen("E:\\pismena.txt","r")) == NULL ) {
printf("Nepodarilo sa otvorit");
getchar();
return 1; }
s1=malloc(255);
while (fgets(str,255,f) != NULL) {
pocet++;
printf("Riadok cislo : %d \n",pocet);
y=strlen(str);
/*printf("Dlzka retazca %d\n",y);*/
while (1) {
if (strchr(str, ' ') == NULL)
break;
p_d=strchr(str,' ');
u=p_d-str;
najdi_zmaz(str,s1,u);
pom++;
printf("%s\n",str);
lol=sizeof(str);
printf("Velkost pola %d\n",lol);
}
/*if (pom ==0) */
/*printf("%shj",str);*/
pom=0;
/*printf("%s",str);*/
}
getchar();
return 0;
}
void cisti(void)
{
int c;
while ((c=getchar()) != '\n');
}
void najdi_zmaz(char *s, char *s1, int u)
{
char s2[225];
int x,y,z,m=0,pom;
for (x=0; x<u; x++)
{
s1[x]=s[x];
}
s1[x]='\0';
z=sizeof(s);
printf("Velkost pole z funkcie %d\n",z);
for (y=x; y<z; y++) {
s2[m]=s[y];
m++; }
s2[m]='\0';
for (x=0; x<z; x++)
s[x]='\0';
for (pom=0; pom<m; pom++)
s[pom]= s2[pom];
s[pom]='\0';
printf("Volane z funkcie %s\n",s1);
printf("Volane z funkcie %s\n",s);
}
zatial to mam iba rozpracovane, cize plno chyb, ale vo funkcii najdi _zmaz mam tento prikaz:
z=sizeof(s); a vzdy mi vrati hodnotu 4, a v hlavnom programe mam teiz toto a tam mi vrati vzdy 255 co je spravne, cize nechapem preco mi to vo funkcii vracia nieco ine