C tarih programı çalışmamaya başladı

Başlatan betseg, 02 Şubat 2016 - 16:59:56

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

betseg

Şu kod eskiden (birkaç ay önce) hata vermeden çalışıyordu ama çalışmamaya başladı? GCC'de, Glibc'de filan güncelleme sonucu mu yoksa başka bir şey mi?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>

int recursion(){
    time_t t = time(NULL);
    struct tm tm = *localtime(&t);
   
    if (tm.tm_mday == 31 && tm.tm_mon+1 == 12)
        printf("YENI YIL!!1!\n");
    else
        printf("siradan bi gun\n");
   
    sleep(86400);
    recursion();
}

int main(void) {recursion();}


Verdiği hata:
qweqwe.c:7:8: error: initializer element is not constant
time_t t = time(NULL);
        ^
qweqwe.c:8:20: error: invalid initializer
struct tm tm = *localtime(&t);
                ^

nuked

gentoo da derledim bir sıkıntı olmadı. gcc-5.3 ve glibc-2.22 yüklü

bugra9

Bende de hata vermiyor ve düzgün çalışıyor.


[bugra@bugra ~]$ gcc --version
gcc (GCC) 5.3.0

glibc-2.22

Reverser


XFCE ROCKS !
Powered by Thunar & XFWM4



ata1

güncellemede pacman ileri koştu sana da aynısı olmasın  ;D kalu 4.3 istiyor diye tutturdu bana hallettim ama xkill komut yok diyor. :)

7hr33l3t73r

#5
@betseg;
Biraz kodlarinizi inceledim.Derleme isleminde sizin kodlariniz ile aldigim uyarilar ve duzenlemis oldugum kodlar ile birlikte asagida.
Sleep kullanmaniza bir anlam veremedim.Onun disinda stdlib.h kutuphanesi de ayni sekilde.Programi bir gun bekletip
kapatmak istemenize hic bir anlam veremedim.
Gereksiz buldugum icin yorum satiri yapma geregi duydum.Acaba, amac programi gun de bir calistirmak olabilir mi? ya da
benim anladigim, devamli calisan bir yazilim olacak ve Yeni yili bir gun oncesinden haber vermesi saglanacak.
Hadi bu sekilde calistirdiniz gun de bir(PC'yi hic  kapatmadan).While dongusune aldiniz(sleep yine ayni).Ya programi
Nisan ayinda baslatirsak, bu sefer yine Nisan da bir yil olup, program calisacak ama yeni yil uyarisini kacirmis olucagiz. :)
Aslinda sistem servisi olusturup, calismasi icin zaman ayarli yapmak en mantiklisi. Boylelikle PC'yi kapatsak bile, acildigi zaman
sistem servisi baslayacak ve bize artik yeni yil oldugu zaman,  Mutlu yillar muzigi mi? calar.Yoksa sadece mesaj mi? verir.Orasi artik size kalmis.
Ben sadece uyarilar icin duzenleme yaptim ve size kodlariniz icin yorum da bulundum.
Ya da bu kadar ayrintiya takilmamak mi? gerekiyordu. :)

/*
btsg.c: In function 'recursion':
btsg.c:17:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
btsg.c: In function 'main':
btsg.c:18:1: warning: control reaches end of non-void function [-Wreturn-type]
int main(void) {recursion();}
^
*/
#include <stdio.h>
#include <time.h>
#include <unistd.h>

static void recursion(void) {
    time_t t = time(NULL);
    struct tm info = *localtime(&t);

    if (info.tm_mday == 31 && info.tm_mon+1 == 12) {
        printf("YENI YIL!!1!\n");
    } else {
        printf("Siradan bir gun!\n");
    }
}
int main(void) {
    recursion();
//    sleep(86400);
}

Edit="s/yil/gun/"
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

betseg

Kopyalarken sıkıntı olmuş galiba, tekrar yazınca düzeldi.
Programda sleep olmasının sebebi, 86400 saniye (1 gün) uyutup 31 Aralık mı diye bakmak :) Kaçırmak filan yok yani.

7hr33l3t73r

Pardon ben yanlis hesaplamisin herhalde:)
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html