int nombreAlea(int min, int max){
return (rand()%(max-min 1) min);
}
int main () {
srand(time(0));
int annee=nombreAlea(1940,2003),mois=nombreAlea(1,12),jour;
/// le traitement de la date
if((mois==1)||(mois==3)||(mois==5)||(mois==7)||(mois==8)||(mois==10)||(mois==12)) jour = nombreAlea(1,31);
if((mois==4)||(mois==6)||(mois==9)||(mois==11)) jour = nombreAlea(1,30);
if(mois==2)
{if (annee % 4 == 0 )
jour = nombreAlea(1,28);
else
jour = nombreAlea(1,29);
}
/// the format of the date is jj/mm/aaaa
signed char Date[20];
signed char jour_c[3],mois_c[3],annee_c[6];
itoa(jour,jour_c,10);
itoa(mois,mois_c,10);
itoa(annee,annee_c,10);
Date[0]=jour_c[0];
Date[1]=jour_c[1];Date[2]='/';
Date[3]=mois_c[0];Date[4]=mois_c[1];Date[5]='/';
Date[6]=annee_c[0];Date[7]=annee_c[1];Date[8]=annee_c[2];Date[9]=annee_c[3];Date[10]='\0';
printf("%s",Date);
return 0 ;
}
我想隨機生成一個生日,但問題是有時我得到了一半的日期,有時我只得到 2 個字符,我不明白問題出在哪里,任何幫助!
uj5u.com熱心網友回復:
正如 Barmar 的評論,您不能假設jour_c和mois_c是單字符字串。利用
Date[0] = '\0'; // or you can initialize it as signed char Date[20] = {0};
strcat(Date, jour_c);
strcat(Date, "/");
strcat(Date, mois_c);
strcat(Date, "/");
strcat(Date, annee_c);
代替
Date[0]=jour_c[0];
Date[1]=jour_c[1];Date[2]='/';
Date[3]=mois_c[0];Date[4]=mois_c[1];Date[5]='/';
Date[6]=annee_c[0];Date[7]=annee_c[1];Date[8]=annee_c[2];Date[9]=annee_c[3];Date[10]='\0';
uj5u.com熱心網友回復:
問題是
jour_c在 1 到 9 之間的天數中只有 1 位數字,所以jour_c[1]將是空終止符,而不是第二位數字。
– 巴馬爾
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/390160.html
