Hirdetés

Új hozzászólás Aktív témák

  • Gyuri16
    senior tag

    Köszönöm, így már értem :D
    #include<stdio.h>
    char mondat[100];
    char elso[100];
    char masodik[100];
    char harmadik[100];
    int i,j,k,l;

    int main(){
    printf("adatok: ");
    gets(mondat);
    i=0;
    do{
    elso[i]=mondat[i];
    i++;
    }while(mondat[i]!=',');
    elso[i+1]=='\0';

    i=i+2;
    j=0;
    do{
    masodik[j]=mondat[i];
    i++;
    j++;
    }while(mondat[i]!=',');

    i=i+2;
    j=0;
    do{
    harmadik[j]=mondat[i];
    i++;
    j++;
    }while(mondat[i]!='\0');




    printf("%s\n",elso);
    printf("%s\n",masodik);
    printf("%s\n",harmadik);
    system("pause");
    return 0;
    }

    ha a tanaraid szigoruak, akkor meg van par dolog amit lehet ezen javitani:
    1. gets nem egy tul jo fuggveny, mert nem ellenorzi a buffer es a bemenet hosszat. buffer overrun lehet a vege. helyette inkabb fgets ajanlott
    2. a programod jol lefut, ha olyan bemenetet kap, mint amilyet var, viszont ha csak egy vesszo van a mondat-ban, akkor csunya dolgokat csinal. a while ciklusaidban jo lenne a mondat veget jelzo \0-t is figyelni (ilyenkor valami hibakoddal kilepni)
    ez ervenyes az i=i+2-re is
    3. a masodik es harmadik stringet nem zarod le \0-val

Új hozzászólás Aktív témák