Tein allaolevan ohjelman moikka.c
#include <stdio.h>
int main(void)
{
printf("Hyvin menee\n");
return 0;
}
Käänsin sen gcc:llä moikka-nimiseksi ja annoin suoritusoikeudet.
Nyt vaan ei millään käyttis (Ubuntuun perustuva) suostu käynnistämään sitä vaan herjaa:
moikka: komentoa ei löytynyt
Missä mahtaa olla vika?
Koodaus: Eka C-ohjelma ei toimi
30
606
Vastaukset
- väännös
Onko siellä hakemistossa edes käännettyä ohjelmatiedostoa? Siitä on nyt aikaa kun viimeksi linuxilla käänsin ceetä, mutta joku lisäpalikka piti asentaa. Oletuksena ei ole kuin c kikkareet.
./moikka- aloitteleva_C-koodari
On käännetty ohjelmatiedosto mutta se ei toimi. :(
- aloitteleva_C-koodari
aloitteleva_C-koodari kirjoitti:
On käännetty ohjelmatiedosto mutta se ei toimi. :(
Pahus, en huomannut että ohjelma pitääkin käynnistää ./-etuliitteellä, nyt toimii.
Toinen kysymys on se että koitin tehdä ohjelman joka kysyy etunimeä ja sitten tulostaa ruudulle "Terve, xxxx" jossa x:t on siis nimi.
Eli tällainen koodi:
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char x, y;
printf("Mikä on nimesi?\n");
scanf("&x", y);
printf("Terve, &x\n",y);
return 0;
}
Mutta kääntäjä herjaa virheistä eikä tuo suostu tulostamaan nimeä, miten saan nimen luettua muuttujaan? - C.on.helppo.kieli
aloitteleva_C-koodari kirjoitti:
Pahus, en huomannut että ohjelma pitääkin käynnistää ./-etuliitteellä, nyt toimii.
Toinen kysymys on se että koitin tehdä ohjelman joka kysyy etunimeä ja sitten tulostaa ruudulle "Terve, xxxx" jossa x:t on siis nimi.
Eli tällainen koodi:
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char x, y;
printf("Mikä on nimesi?\n");
scanf("&x", y);
printf("Terve, &x\n",y);
return 0;
}
Mutta kääntäjä herjaa virheistä eikä tuo suostu tulostamaan nimeä, miten saan nimen luettua muuttujaan?Linuxit ovat sekavia, oikeastaan täysiä paskoja jos totta puhutaan.
Mihin käytät ctype-kirjastoa? Char on C-kielen primitiivi tietotyyppi.
Miksi et varaa merkkijonolle tilaa? Käyttäisin stdlib-kirjaston calloc-funktiota. Muista sitten vapauttaa muisti, jos päädyt allokoimaan muistia erikseen.
Pinomuistia ei saa koskaan käyttää, jos on mahdollisuus koodata järkevästi. Eli opettele heti alussa dynaaminen muistinvaraaminen. aloitteleva_C-koodari kirjoitti:
Pahus, en huomannut että ohjelma pitääkin käynnistää ./-etuliitteellä, nyt toimii.
Toinen kysymys on se että koitin tehdä ohjelman joka kysyy etunimeä ja sitten tulostaa ruudulle "Terve, xxxx" jossa x:t on siis nimi.
Eli tällainen koodi:
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char x, y;
printf("Mikä on nimesi?\n");
scanf("&x", y);
printf("Terve, &x\n",y);
return 0;
}
Mutta kääntäjä herjaa virheistä eikä tuo suostu tulostamaan nimeä, miten saan nimen luettua muuttujaan?Char tyyppi sisältää arvot -128-128 eli siihen mahtuu yksi merkki. unsigned char x[128]; esittelee jo merkkijonon johon mahtuu 128 merkkiä. unsigned taitaa olla oletus, mutta ei siitä haittaakaan ole.
- malloc-free
Mikko_Tku kirjoitti:
Char tyyppi sisältää arvot -128-128 eli siihen mahtuu yksi merkki. unsigned char x[128]; esittelee jo merkkijonon johon mahtuu 128 merkkiä. unsigned taitaa olla oletus, mutta ei siitä haittaakaan ole.
Taulukon varaaminen pinomuistista ei ole hyvän ohjelmointitavan mukaista. Kannattaa heti alkuun opetella käyttämään muistinvaraus- ja vapautusfunktioita.
- Turbo-Urpo
aloitteleva_C-koodari kirjoitti:
Pahus, en huomannut että ohjelma pitääkin käynnistää ./-etuliitteellä, nyt toimii.
Toinen kysymys on se että koitin tehdä ohjelman joka kysyy etunimeä ja sitten tulostaa ruudulle "Terve, xxxx" jossa x:t on siis nimi.
Eli tällainen koodi:
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char x, y;
printf("Mikä on nimesi?\n");
scanf("&x", y);
printf("Terve, &x\n",y);
return 0;
}
Mutta kääntäjä herjaa virheistä eikä tuo suostu tulostamaan nimeä, miten saan nimen luettua muuttujaan?Tässä esimerkissä otetaan vastaan samalla kertaa, Etunimi ja Sukunimi, lisäksi mukana on värit.
https://s22.postimg.cc/pj5dwikgh/Valinta_030.png
#include <stdio.h>
int main(void){
#define NORM "\x1B[0m"
#define PUNA "\x1B[31m"
#define VIHR "\x1B[32m"
char enimi, snimi[20];
printf(VIHR);
printf("Mikä on nimesi? ");
printf(NORM);
scanf("%s %s", &enimi, &snimi);
printf(VIHR);
printf("Terve ");
printf(PUNA);
printf("%s %s", &enimi, &snimi);
printf(NORM);
return 0; } - bugeja-piisaa
Turbo-Urpo kirjoitti:
Tässä esimerkissä otetaan vastaan samalla kertaa, Etunimi ja Sukunimi, lisäksi mukana on värit.
https://s22.postimg.cc/pj5dwikgh/Valinta_030.png
#include <stdio.h>
int main(void){
#define NORM "\x1B[0m"
#define PUNA "\x1B[31m"
#define VIHR "\x1B[32m"
char enimi, snimi[20];
printf(VIHR);
printf("Mikä on nimesi? ");
printf(NORM);
scanf("%s %s", &enimi, &snimi);
printf(VIHR);
printf("Terve ");
printf(PUNA);
printf("%s %s", &enimi, &snimi);
printf(NORM);
return 0; }En usko että tuo toimii, koska muuttuja enimi ei ole taulukko.
bugeja-piisaa kirjoitti:
En usko että tuo toimii, koska muuttuja enimi ei ole taulukko.
Vahvistan toimimattomuuden. Koodi ei käänny ainakaan uusimmalla Ubuntulla.
kullimoottori@ubuntu18:~/temp$ gcc nimet.c -o nimet
nimet.c: In function ‘main’:
nimet.c:11:12: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘char (*)[20]’ [-Wformat=]
scanf("%s %s", &enimi, &snimi);
~^ ~~~~~~
nimet.c:15:13: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘char (*)[20]’ [-Wformat=]
printf("%s %s", &enimi, &snimi);
~^ ~~~~~~
kullimoottori@ubuntu18:~/temp$- Turbo-Urpo
Kullimoottori kirjoitti:
Vahvistan toimimattomuuden. Koodi ei käänny ainakaan uusimmalla Ubuntulla.
kullimoottori@ubuntu18:~/temp$ gcc nimet.c -o nimet
nimet.c: In function ‘main’:
nimet.c:11:12: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘char (*)[20]’ [-Wformat=]
scanf("%s %s", &enimi, &snimi);
~^ ~~~~~~
nimet.c:15:13: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘char (*)[20]’ [-Wformat=]
printf("%s %s", &enimi, &snimi);
~^ ~~~~~~
kullimoottori@ubuntu18:~/temp$En tiedä mistä vikaa pitäisi etsiä, paikallisesti kääntyy, ja niin kääntyy myös Online kääntäjällä:
https://onlinegdb.com/ByedmqbgX - bugit
Turbo-Urpo kirjoitti:
En tiedä mistä vikaa pitäisi etsiä, paikallisesti kääntyy, ja niin kääntyy myös Online kääntäjällä:
https://onlinegdb.com/ByedmqbgXOhjelmakoodistahan vikaa on tapana etsiä. Vääräntyyppinen muuttuja ei toimi C-kielessä. Voisihan tuossa kokeilla tietysti castausta (vitsi).
- Turbo-Urpo
bugit kirjoitti:
Ohjelmakoodistahan vikaa on tapana etsiä. Vääräntyyppinen muuttuja ei toimi C-kielessä. Voisihan tuossa kokeilla tietysti castausta (vitsi).
Ai jaa, tää meni tämmöisekisi, olis pitänyt arvata.
- heti-tiedetty
Turbo-Urpo kirjoitti:
Ai jaa, tää meni tämmöisekisi, olis pitänyt arvata.
Tiesipä sen jo siinä vaiheessa kun tuon virheitä sisältävän koodinpätkän laitoit.
- Turbo-Urpo
heti-tiedetty kirjoitti:
Tiesipä sen jo siinä vaiheessa kun tuon virheitä sisältävän koodinpätkän laitoit.
Ei siinä mitään virheitä ole, virheet on sinulla ihan muualla.
- vielä.ovat
Turbo-Urpo kirjoitti:
Ei siinä mitään virheitä ole, virheet on sinulla ihan muualla.
Kyllä se sama virhe on siellä edelleen. Tai kaksi virhettä, jotka korjaantuvat korjaamalla toisen.
- Turbo-Urpo
heti-tiedetty kirjoitti:
Tiesipä sen jo siinä vaiheessa kun tuon virheitä sisältävän koodinpätkän laitoit.
Teillä on hitonmoinen halu tuhota ja pilata kaikki tämän saitin paras anti, MIKSI ?
Sitten te itkette kuorossa että Suomi24 on sitä ja tätä, ettekö ymmärrä että se on juuri sitä miksi te itse sen teette. - turhaa.sähkönkulutusta
Turbo-Urpo kirjoitti:
Teillä on hitonmoinen halu tuhota ja pilata kaikki tämän saitin paras anti, MIKSI ?
Sitten te itkette kuorossa että Suomi24 on sitä ja tätä, ettekö ymmärrä että se on juuri sitä miksi te itse sen teette.Virheellisen ohjelmakoodin postaaminenko on mielestäsi hyvää antia? No huvinsa kullakin.
Turbo-Urpo kirjoitti:
Tässä esimerkissä otetaan vastaan samalla kertaa, Etunimi ja Sukunimi, lisäksi mukana on värit.
https://s22.postimg.cc/pj5dwikgh/Valinta_030.png
#include <stdio.h>
int main(void){
#define NORM "\x1B[0m"
#define PUNA "\x1B[31m"
#define VIHR "\x1B[32m"
char enimi, snimi[20];
printf(VIHR);
printf("Mikä on nimesi? ");
printf(NORM);
scanf("%s %s", &enimi, &snimi);
printf(VIHR);
printf("Terve ");
printf(PUNA);
printf("%s %s", &enimi, &snimi);
printf(NORM);
return 0; }Koodi on oikein ja kääntyy. Muuttuja emini pitää muuttaa muotoon enimi[20]- Tyypiksi mieluiten unsigned char.
Siitä on yli 20 v. kun C:tä olen kirjoittanut jotain sentään muistan. Kääntäjissä paljon eroja ja asetuksia on paljon. Se, että ohjelma kääntyy ei takaa että se toimii halutulla tavalla. Ohjelma jossa on miljoonia rivejä koodia on vaikea saada virheettömäksi.- bugista.paskaa
Mikko_Tku kirjoitti:
Koodi on oikein ja kääntyy. Muuttuja emini pitää muuttaa muotoon enimi[20]- Tyypiksi mieluiten unsigned char.
Siitä on yli 20 v. kun C:tä olen kirjoittanut jotain sentään muistan. Kääntäjissä paljon eroja ja asetuksia on paljon. Se, että ohjelma kääntyy ei takaa että se toimii halutulla tavalla. Ohjelma jossa on miljoonia rivejä koodia on vaikea saada virheettömäksi.Eihän se koodi ole oikein, jos sitä pitää ensin korjata. Olette te linuksjurpot kyllä ihme vänkääjiä.
bugista.paskaa kirjoitti:
Eihän se koodi ole oikein, jos sitä pitää ensin korjata. Olette te linuksjurpot kyllä ihme vänkääjiä.
Kumman paljon niitä bugi-päivityksiä tulee oli systeemi sitten mikä tahansa. C kielessä muistinhallinta on ohjelmoijan vastuulla. Ei liity Linuxiin - C kieliset ohjelmat kääntyvät monissa ympäristöissä. Ei tule mieleen ympäristöä jossa C:tä ei käytettäisi. Varmaan myös autossasi.
- myöntäkää.bugi
Mikko_Tku kirjoitti:
Kumman paljon niitä bugi-päivityksiä tulee oli systeemi sitten mikä tahansa. C kielessä muistinhallinta on ohjelmoijan vastuulla. Ei liity Linuxiin - C kieliset ohjelmat kääntyvät monissa ympäristöissä. Ei tule mieleen ympäristöä jossa C:tä ei käytettäisi. Varmaan myös autossasi.
Mitä sitten. Tässä on kyse tuosta yhdestä tähän postatusta koodinpätkästä, jossa näki virheen jo kilometrin päästä katsottuna. Siitä alkoi sitten hillitön itku että koodi toimii, vaikkei se toimi ennen korjaamista, kuten itsekin kerroit.
Ihme vänkäämistä, kun olisi kerralla voinut todeta että virhehän siinä on.
Joo, kyllä on C-kieltä vaikka missä. Olen itsekin koodannut sillä tavallisten tietokoneiden lisäksi mikrokontrollereille. - pukipuki
myöntäkää.bugi kirjoitti:
Mitä sitten. Tässä on kyse tuosta yhdestä tähän postatusta koodinpätkästä, jossa näki virheen jo kilometrin päästä katsottuna. Siitä alkoi sitten hillitön itku että koodi toimii, vaikkei se toimi ennen korjaamista, kuten itsekin kerroit.
Ihme vänkäämistä, kun olisi kerralla voinut todeta että virhehän siinä on.
Joo, kyllä on C-kieltä vaikka missä. Olen itsekin koodannut sillä tavallisten tietokoneiden lisäksi mikrokontrollereille.Mikähän ihme luovuttaja sinä olet?
Ai niin, olet sentään koodannut mirokontrollereille. - ObjectPascal_Koodaaja
C.on.helppo.kieli kirjoitti:
Linuxit ovat sekavia, oikeastaan täysiä paskoja jos totta puhutaan.
Mihin käytät ctype-kirjastoa? Char on C-kielen primitiivi tietotyyppi.
Miksi et varaa merkkijonolle tilaa? Käyttäisin stdlib-kirjaston calloc-funktiota. Muista sitten vapauttaa muisti, jos päädyt allokoimaan muistia erikseen.
Pinomuistia ei saa koskaan käyttää, jos on mahdollisuus koodata järkevästi. Eli opettele heti alussa dynaaminen muistinvaraaminen.C EI OLE helppo kieli, vaan vaikea !
No, jos ajat ohjelmaasi paikallisesti komentoriviltä, silloin ohjelmasi sisältävä tietoturvahaavoittuvuus ei haittaa.
MUTTA: jos ohjelmaasi voisi ajaa etänä, ja ohjelmasi kysyisi nimen sijasta käyttäjänimen ja salasanan, niin ohjelmasi olisi hakkerille (siis oikeasti krakkerille) ns. helppo kohde !!!
Itse en ymmärrä, miksi niin moni käyttää C -kieltä.
Kaiken, mitä voi tehdä C:llä, voi tehdä sekä helpommin että turvallisemmin Objectpascalilla (kääntäjänä FreePascal, ja mahdollisesti Lazarus -käyttöliittymä, JOS haluaa tehdä GUI -ohjelmia).
Komentoriviohjelmissa Objectpascalilla luetaan koko rivi päätteeltä näin:
var
S : String;
begin
Write('Syötä nimesi: ');
ReadLn(S);
end;
ja KAS, Pelkkä String -tyypin käyttö riittää!
ObjectPascal varaa itse dynaamisesti tarpeellisen määrän muistitilaa uudelle syötetylle merkkijonolle, ja se varaa automaattisesti oikean kokoisen tilan; riskiä puskurin ylivuodosta ei ole.
MUTTA: Siinä missä ObjectPascal hoitaa tämänkaltaiset asiat automaattisesti, C -kielellä ohjelmoija on ITSE vastuussa asiasta !!!
C-kielessä voit toki tehdä näin:
typedef unsigned char CHAR;
typedef *CHAR PChar;
sitten itse muuttujamäärittely:
PChar S;
nyt voisi joku OIKEASTI OSAAJA kirjoittaa C -kielellä koodin, jota voi kutsua näin helposti:
PChar ReadLn {
// tähän kyseinen koodi, joka toimii kuten ObjectPascalin ReadLn(S), eli ottaa näppäimistöltä syötteen, kunnes painetaan ENTER. Allokoi automaattisesti dynaamista muistia juuri tarvittavan määrän, lukee ko syötteen allokoituun muistiin, ja lopuksi palauttaa pointterin ko. muistilohkoon funktion paluuarvona. C -kielen tapaan merkkijono loppuu chr(0) eli NULL -merkkiin. Koska tuo NULL vie itse yhden merkkipaikan, niin jos syötetty merkkijono on 10 merkkiä, pitää tilanvarauksen olla silloin 11 merkkiä. Vapautus ilmeisesti mfree(strlen(S) 1);
}
Käyttöesimerkki:
PChar S;
S = ReadLn();
osaako joku koodata C:llä OIKEIN tuollaisen ReadLn -funktion, joka osaa itse laskea, montako tavua muistia varataan, tehdä ko. varauksen ja palauttaa pointterin luettuun dynaamisesti allokoituun merkkijonoon ?
Tuon kun kerran tekisi, ei tarttisi jokaisen aloittelijan oppia ensin tietoturvaltaan heikkoja tapoja tehdä asia.
JOS kukaan ei tee tätä C:llä, voisi toki tehdä ObjectPascalilla DLL:n (linuxissa .so) joka tekee halutun asian ja palauttaa pointterin C -ohjelman käytettäväksi.
JOS noin tekee, ehkä silloin käytetään ObjectPascalin muistinhallintaa, ja silloin ko. DLL tarjoaa toisen funktion muistin vapauttamiseen.
Vaihtoehtoisesti voisi tarjota malloc -funktioon funktio-osoittimen tuon DLL:n käytettäväksi, jolloin olisi mahdollista ObjectPascalilla tehdystä DLL:stä käsin kutsua C -kielen malloc() -funktiota.
KYLLÄ: kahta eri ohjelmointikieltä VOI yhteiskäyttää!
Tällöin kuuluu hyviin ohjelmointitapoihin käyttää ns. platform default -kutsutapaa, jollainen on:
Windowsissa: stdcall;
Linuxissa: cdecl;
mirokontrollereista:
pienimmissä (kuten Atmel AVR) ei yleensä ole dynaamista muistinhallintaa.
Niissä ObjectPascalin ns. long string -tyyppi EI toimi, kuten edellä on kerrottu, jollei sitten ITSE toteuta dynaamista muistinhallintaa!
Noissa voi ObjectPascalissa käyttää vanhaa ShortString -tyyppiä, tai jos max. pituus tiedetään, esim:
String[100];
Mutta mirokontrollereissa pitää muutenkin olla tarkkana, niissä ei ole käyttöjärjestelmää turvaamassa asioita, vaan jos mokaat, asiat menevätkin oikein kunnolla pieleen !
Katsotaanpa, osaako joku koodata C:llä oikein suunnitellun vastineen ReadLn -funktiolle ?! - paskinta.kaikesta
ObjectPascal_Koodaaja kirjoitti:
C EI OLE helppo kieli, vaan vaikea !
No, jos ajat ohjelmaasi paikallisesti komentoriviltä, silloin ohjelmasi sisältävä tietoturvahaavoittuvuus ei haittaa.
MUTTA: jos ohjelmaasi voisi ajaa etänä, ja ohjelmasi kysyisi nimen sijasta käyttäjänimen ja salasanan, niin ohjelmasi olisi hakkerille (siis oikeasti krakkerille) ns. helppo kohde !!!
Itse en ymmärrä, miksi niin moni käyttää C -kieltä.
Kaiken, mitä voi tehdä C:llä, voi tehdä sekä helpommin että turvallisemmin Objectpascalilla (kääntäjänä FreePascal, ja mahdollisesti Lazarus -käyttöliittymä, JOS haluaa tehdä GUI -ohjelmia).
Komentoriviohjelmissa Objectpascalilla luetaan koko rivi päätteeltä näin:
var
S : String;
begin
Write('Syötä nimesi: ');
ReadLn(S);
end;
ja KAS, Pelkkä String -tyypin käyttö riittää!
ObjectPascal varaa itse dynaamisesti tarpeellisen määrän muistitilaa uudelle syötetylle merkkijonolle, ja se varaa automaattisesti oikean kokoisen tilan; riskiä puskurin ylivuodosta ei ole.
MUTTA: Siinä missä ObjectPascal hoitaa tämänkaltaiset asiat automaattisesti, C -kielellä ohjelmoija on ITSE vastuussa asiasta !!!
C-kielessä voit toki tehdä näin:
typedef unsigned char CHAR;
typedef *CHAR PChar;
sitten itse muuttujamäärittely:
PChar S;
nyt voisi joku OIKEASTI OSAAJA kirjoittaa C -kielellä koodin, jota voi kutsua näin helposti:
PChar ReadLn {
// tähän kyseinen koodi, joka toimii kuten ObjectPascalin ReadLn(S), eli ottaa näppäimistöltä syötteen, kunnes painetaan ENTER. Allokoi automaattisesti dynaamista muistia juuri tarvittavan määrän, lukee ko syötteen allokoituun muistiin, ja lopuksi palauttaa pointterin ko. muistilohkoon funktion paluuarvona. C -kielen tapaan merkkijono loppuu chr(0) eli NULL -merkkiin. Koska tuo NULL vie itse yhden merkkipaikan, niin jos syötetty merkkijono on 10 merkkiä, pitää tilanvarauksen olla silloin 11 merkkiä. Vapautus ilmeisesti mfree(strlen(S) 1);
}
Käyttöesimerkki:
PChar S;
S = ReadLn();
osaako joku koodata C:llä OIKEIN tuollaisen ReadLn -funktion, joka osaa itse laskea, montako tavua muistia varataan, tehdä ko. varauksen ja palauttaa pointterin luettuun dynaamisesti allokoituun merkkijonoon ?
Tuon kun kerran tekisi, ei tarttisi jokaisen aloittelijan oppia ensin tietoturvaltaan heikkoja tapoja tehdä asia.
JOS kukaan ei tee tätä C:llä, voisi toki tehdä ObjectPascalilla DLL:n (linuxissa .so) joka tekee halutun asian ja palauttaa pointterin C -ohjelman käytettäväksi.
JOS noin tekee, ehkä silloin käytetään ObjectPascalin muistinhallintaa, ja silloin ko. DLL tarjoaa toisen funktion muistin vapauttamiseen.
Vaihtoehtoisesti voisi tarjota malloc -funktioon funktio-osoittimen tuon DLL:n käytettäväksi, jolloin olisi mahdollista ObjectPascalilla tehdystä DLL:stä käsin kutsua C -kielen malloc() -funktiota.
KYLLÄ: kahta eri ohjelmointikieltä VOI yhteiskäyttää!
Tällöin kuuluu hyviin ohjelmointitapoihin käyttää ns. platform default -kutsutapaa, jollainen on:
Windowsissa: stdcall;
Linuxissa: cdecl;
mirokontrollereista:
pienimmissä (kuten Atmel AVR) ei yleensä ole dynaamista muistinhallintaa.
Niissä ObjectPascalin ns. long string -tyyppi EI toimi, kuten edellä on kerrottu, jollei sitten ITSE toteuta dynaamista muistinhallintaa!
Noissa voi ObjectPascalissa käyttää vanhaa ShortString -tyyppiä, tai jos max. pituus tiedetään, esim:
String[100];
Mutta mirokontrollereissa pitää muutenkin olla tarkkana, niissä ei ole käyttöjärjestelmää turvaamassa asioita, vaan jos mokaat, asiat menevätkin oikein kunnolla pieleen !
Katsotaanpa, osaako joku koodata C:llä oikein suunnitellun vastineen ReadLn -funktiolle ?!Pascal on nimensä mukaisesti paskaa.
- Turbo-Urpo
Kokeile Lazarusta, niin saat näöltäänkin mielyttäviä tuloksia aikaan:
https://s22.postimg.cc/8b22j2ws1/sanakirja1.gif- Turbo-Urpo
GIF animaatiosta saa käsityksen, että olisi Windows XP, josta kuva on peräisin, mutta totuus on että kyseessä on Fedora 28 Xfce 4.12 työpöytä, XP teemalla.
Copypastesin koodisi uusimpaan Ubuntuun ja ainakin siinä se toimi normaalisti heti käännön jälkeen.
kullimoottori@ubuntu18:~/temp$ gcc moikka.c -o moikka
kullimoottori@ubuntu18:~/temp$ ./moikka
Hyvin menee
kullimoottori@ubuntu18:~/temp$- joopa_joo
Joo, ristiinkääntelin tuota ubuntussa arm-ytimelle lenovo tab:iin ja ajoin virtuaalisess com-portissa olevassa terminaalissa: Kyllä se toimii ihan niin kuin pitää myös tabletissa.
- Anonyymi
C ja C kielissä on molemmissa tuo muistin hallinta kyllä hankalaa aloittelijalle. Se hidastaakin tavallaan oppimista, mutta toisaalta antaa sitten kyllä aika täydellisen kontrollin siihen, miten asiat oikeasti suoritetaan koneen uumenissa.
Rust on myös yksi uudehko ja mielenkiintoinen kieli joka pyrkii pääsemään eroo noista muistin hallintaan liittyvistä murheista. Syntaksi on vähän tutumpaa C/C koodaajalle kuin esim. pascal. Tai näin ainakin omaan silmään näyttäisi.Rust, Clang ja LLVM valtaamassa alaa. Uusimmat Firefoxit kääntyy noilla. C oikeasti hankala kieli, mutta hyvät kirjastot auttaa. Merkkijononkin lukuun löytyy valmiita kirjastoja jotka toimii. Esimerkiksi hetun lukeminen vaatii jo enemmän koodia jos halutaan tarkistaa sen oikeellisuus.
Ketjusta on poistettu 1 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Nurmossa kuoli 2 Lasta..
Autokolarissa. Näin kertovat iltapäivälehdet juuri nyt. 22.11. Ja aina ennen Joulua näitä tulee. . .603435Vanhalle ukon rähjälle
Satutit mua niin paljon kun erottiin. Oletko todella niin itsekäs että kuvittelet että huolisin sut kaiken tapahtuneen472951Maisa on SALAKUVATTU huumepoliisinsa kanssa!
https://www.seiska.fi/vain-seiskassa/ensimmainen-yhteiskuva-maisa-torpan-ja-poliisikullan-lahiorakkaus-roihuaa/15256631242809Mikko Koivu yrittää pestä mustan valkoiseksi
Ilmeisesti huomannut, että Helenan tukijoukot kasvaa kasvamistaan. Riistakamera paljasti hiljattain kylmän totuuden Mi3541877- 711116
Ensitreffit Hai rehellisenä - Tämä intiimiyden muoto puuttui suhteesta Annan kanssa: "Meillä ei..."
Hai ja Anna eivät jatkaneet avioliittoaan Ensitreffit-sarjassa. Olisiko mielestäsi tällä parilla ollut mahdollisuus aito101111Purra hermostui A-studiossa
Purra huusi ja tärisi A-studiossa 21.11.-24. Ei kykene asialliseen keskusteluun.1971050Joel Harkimo seuraa Martina Aitolehden jalanjälkiä!
Oho, aikamoinen yllätys, että Joel Jolle Harkimo on lähtenyt Iholla-ohjelmaan. Tässähän hän seuraa mm. Martina Aitolehde27879- 45869
Miksi pankkitunnuksilla kaikkialle
Miksi rahaliikenteen palveluiden tunnukset vaaditaan miltei kaikkeen yleiseen asiointiin Suomessa? Kenen etu on se, että104864