Det är ju som satan att man aldrig får lära sig programmering!!!

Permalänk

Det är ju som satan att man aldrig får lära sig programmering!!!

Jag har vid flera tillfällen försökt lära mig programmering. Visual basic och Java var först men jag tröttnade lite efter ett tag. Nu är det tredje gången jag sätter igång och försöker lära mig och har börjat med C men inte faaaeen går det att lära sig när bokens enkla kodexempel inte ens fungerar som dom ska.

Vad är problemet!! vem vill att jag aldrig ska orkar lära mig programmering !! fy fan!!

denna kod tex:

#include <stdio.h>

int main()
{
int c, nl;

nl = 0;
while ((c = getchar()) != EOF)
if ( c == '\n')
++nl;
printf("%d\n", nl);

}

den ska räkna bokstäver sägs det men den gör ingenting. samma sak med följande program som minsann ska räkna lines och ord och allt. Men inget av dem funkar. Hur satan ska man kunna göra program som räknar tabs och mellanslag när exemplen inte gör något ens gaaaah!! jag blir vansinnig och arg och det finns inte ens nå kurser för C längre och jag tänker inte betala 15000 för nån dålig kurs !!! aaaagahghagh

Visa signatur

CPU: i7 980x - GPU: Sapphire Toxic HD 5970 4GB - Moderkort: ASRock 1366 ATX Intel X58 - Minne: Corsair XMS3 3x2Gb 1333Mhz (9-9-9-24) - HDD: Seagate Barracuda 0,5 TB STULEN I DECEMBER !!!Så har fått återgå till gamla Bettan: CPU: Intel Pentium M 2 GHz - GPU: ATI Mobility Radeon X700 256 MB - RAM: 2 GB - HDD: 80 GB hahaha!

Permalänk

Den där räknar ju rader?

Såhär ska du räkna tecken:

#include <stdio.h> int main() { int c, nl; nl = 0; while ((c = getchar()) != EOF) ++nl; printf("%d\n", nl); }

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

vart har du hittat exemplet?
det är något skumt skrivet, utskriften kommer efter hela loopen är klar, inte efter varje ord, om jag försöker avbryta loopen med ctrl+c så blir det crash, ett alternativ är att man väljer något annat... nedan har jag skrivit om lite så det ger lite feedback, det hanterar inte om du knäpper in null tecken dock.

#include <stdio.h> void main(){ int c, nl=0; printf("Write some words, separate with [enter]:\n"); while ((c = getchar()) != EOF){ if (c == '\n'){ ++nl; printf("Number of rows: %d\n", nl); } } }

Permalänk
Hedersmedlem
Skrivet av Dalton Sleeper:

om jag försöker avbryta loopen med ctrl+c så blir det crash

Eof är ctrl-z.

Permalänk
Medlem
Skrivet av Elgot:

Eof är ctrl-z.

kompilatorn verkar inte kunna upptäcka detta, varför blir det krash någonstans när man trycker ctrl+c?
är ingen vidare expert på detta :S jag kan ju inte ta om hand och rätta till felet.

Edit 1: aha, z men ctrl + c då?
testade z men ingenting hände.

Edit 2: ctrl + z ger typ "^Z" :S
oj vad länge sedan man körde c känns det som, kommer inte ihåg skillnaderna mellan c & c++

Permalänk
Hedersmedlem
Skrivet av Dalton Sleeper:

vart har du hittat exemplet?
det är något skumt skrivet, utskriften kommer efter hela loopen är klar, inte efter varje ord, om jag försöker avbryta loopen med ctrl+c så blir det crash, ett alternativ är att man väljer något annat... nedan har jag skrivit om lite så det ger lite feedback, det hanterar inte om du knäpper in null tecken dock.
...

Inte speciellt konstigt skriven, den skriver ju helt enkelt ut antalet rader efter loopen.

I övrigt ska main returnera en integer, inte void.

Skrivet av Elgot:

Eof är ctrl-z.

I *NIX är CTRL-Z suspend medans CTRL-D är EOF (egentligen EOT).

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem
Skrivet av m0REc:

Inte speciellt konstigt skriven, den skriver ju helt enkelt ut antalet rader efter loopen.

I övrigt ska main returnera en integer, inte void.

I *NIX är CTRL-Z suspend medans CTRL-D är EOF (egentligen EOT).

hur ställer jag in så mitt fönster godtar ctrl+z då? det ger mig bara resultatet ovan så kan alltså inte avbryta loopen nu, dvs inte skriva ut resultatet enligt hans originalprogram. kör vs2010 c++.

ang void så satte jag den där bara för att han inte returnerade något alls vad jag såg, så return 0 eller void...

edit: ctrl+c verkar döda hela appen, ctrl+z verkar fungera nu av nån anledning med entertryck efter. lite kinkiga grejer när man är van vid c++

Permalänk

men förstår inte hur programmen ska funka, kan nån beskriva hur programmen ser ut när de funkar alltså typ.

Jag får för mig att det ska typ funkger som så att:

jag trycker in ett antal bokstäver

"oijoij"

sen trycker jag på

"ENTER"

och sen visar den i detta fall

"6"

men den gör inte så?? det är bara en tom ruta som man kan fylla med tecken och trycka på enter om man vill börja på en ny rad.

Visa signatur

CPU: i7 980x - GPU: Sapphire Toxic HD 5970 4GB - Moderkort: ASRock 1366 ATX Intel X58 - Minne: Corsair XMS3 3x2Gb 1333Mhz (9-9-9-24) - HDD: Seagate Barracuda 0,5 TB STULEN I DECEMBER !!!Så har fått återgå till gamla Bettan: CPU: Intel Pentium M 2 GHz - GPU: ATI Mobility Radeon X700 256 MB - RAM: 2 GB - HDD: 80 GB hahaha!

Permalänk
Medlem
Skrivet av Synshaders:

men förstår inte hur programmen ska funka, kan nån beskriva hur programmen ser ut när de funkar alltså typ.

Jag får för mig att det ska typ funkger som så att:

jag trycker in ett antal bokstäver

"oijoij"

sen trycker jag på

"ENTER"

och sen visar den i detta fall

"6"

men den gör inte så?? det är bara en tom ruta som man kan fylla med tecken och trycka på enter om man vill börja på en ny rad.

programmet ska inte skriva ut något när du matar in grejer & trycker enter, utskriftraden sitter efter loopen, så om du avslutar med ctrl-z (om det funkar för dej, inte för mej) så ska loopen avslutas och skriva ut hur många rader du har.

Nedanstående utför samma sak som ditt program, skillnaden är att paranteserna är utskrivna, nu kan du se att utskriften sitter utanför loopen.

#include <stdio.h> int main(){ int c, nl; nl = 0; while ((c = getchar()) != EOF){ if ( c == '\n'){ ++nl; } } printf("%d\n", nl); }

Permalänk

men gud vad sjukt att det inte står nåt i läroboken om att man ska trycka ctrl+Z för att det ska funka, det är ju så man kan bli vansinnig xOO!!!

tack det funkade med det i alla fall

Visa signatur

CPU: i7 980x - GPU: Sapphire Toxic HD 5970 4GB - Moderkort: ASRock 1366 ATX Intel X58 - Minne: Corsair XMS3 3x2Gb 1333Mhz (9-9-9-24) - HDD: Seagate Barracuda 0,5 TB STULEN I DECEMBER !!!Så har fått återgå till gamla Bettan: CPU: Intel Pentium M 2 GHz - GPU: ATI Mobility Radeon X700 256 MB - RAM: 2 GB - HDD: 80 GB hahaha!

Permalänk

nu vill boken att jag ska skriva ett program som printar the value of EOF.

hur sjutton printar man värdet av ett jäkla bioblioteksjox som jag inte ens vet vad den gör riktigt

Visa signatur

CPU: i7 980x - GPU: Sapphire Toxic HD 5970 4GB - Moderkort: ASRock 1366 ATX Intel X58 - Minne: Corsair XMS3 3x2Gb 1333Mhz (9-9-9-24) - HDD: Seagate Barracuda 0,5 TB STULEN I DECEMBER !!!Så har fått återgå till gamla Bettan: CPU: Intel Pentium M 2 GHz - GPU: ATI Mobility Radeon X700 256 MB - RAM: 2 GB - HDD: 80 GB hahaha!

Permalänk
Medlem

Föreslår att du börjar med en lite lättare bok än K&R.

Permalänk
Skrivet av Findah:

Föreslår att du börjar med en lite lättare bok än K&R.

men boken heter ju "The C programming language" av Brian W. Kernighan och Dennis M. Ritchie

vad skulle vara en lätt bok då jag vill ju lära mig C förs för att jag är nyfiken

Visa signatur

CPU: i7 980x - GPU: Sapphire Toxic HD 5970 4GB - Moderkort: ASRock 1366 ATX Intel X58 - Minne: Corsair XMS3 3x2Gb 1333Mhz (9-9-9-24) - HDD: Seagate Barracuda 0,5 TB STULEN I DECEMBER !!!Så har fått återgå till gamla Bettan: CPU: Intel Pentium M 2 GHz - GPU: ATI Mobility Radeon X700 256 MB - RAM: 2 GB - HDD: 80 GB hahaha!

Permalänk
Medlem

C++ for dummies den här boken skulle du börja med.

Visa signatur

Corsair Obsidian 650D, Intel Core i7 4820K, Corsair H100, Asus Rampage IV Formula, 16GB Corsair Dominator Platinum 1866MHz, Asus GTX 980, Intel 320 120GB SSD, 640 GB WD Caviar Black x2 Raid 0, Corsair AX750, Asus VG278H med 3D Vision 2 kit, Asus G900, Asus ROG Mechanical Tangentbord CherryMX Svart, Xbox 360 Wireless controller ....

Permalänk
Medlem

Antar att det fanns en speciell anledning till att du lär dig just C som jag missade? Om det inte är mikroprocessorer du ska programmera så hade jag hållit mig långt borta från det gamla språket och valt ett "renare", enklare och mer användbart språk såsom C# eller java istället.

Permalänk
Hedersmedlem
Skrivet av Dalton Sleeper:

Edit 1: aha, z men ctrl + c då?
testade z men ingenting hände.

Ctrl-z + enter verkar vara knepet (medan ctrl-d fungerar direkt).

Permalänk
Medlem

Om du ska lära dig att programmera får du nog tyvärr räkna med en väldig massa frustration över liknande problem...

Vet inte hur många gånger jag suttit med ett stycke kod som jag tyckt såg helt rätt ut, men där kompilatorn bara klagat.
Det är en naturlig del av processes att lära sig programmera. Kan dock vara bra om du har någon att fråga när du kör fast om inte frustrationen ska växa sig för hög..

Visa signatur

Namn : Jesper | Ålder : 45 | In-game namn : iller
Yrke : Matematisk modellerare (finansiell matematik), mjukvaruutvecklare för risksystem.
Utbildning : Doktor i matematik + en del mat-stat, numme och IT-relaterat.

Permalänk

Tja, dessa koder var ju direkt exempel från boken. Tycker inte att dom förklarar allt bara. Fattar bara inte varför det inte kunde stå i boken hur programmen används när de körs. Var skulle man tagit reda på det liksom. Om de gör sånna missar så har de ju ingenting att lära ut...

Visa signatur

CPU: i7 980x - GPU: Sapphire Toxic HD 5970 4GB - Moderkort: ASRock 1366 ATX Intel X58 - Minne: Corsair XMS3 3x2Gb 1333Mhz (9-9-9-24) - HDD: Seagate Barracuda 0,5 TB STULEN I DECEMBER !!!Så har fått återgå till gamla Bettan: CPU: Intel Pentium M 2 GHz - GPU: ATI Mobility Radeon X700 256 MB - RAM: 2 GB - HDD: 80 GB hahaha!

Permalänk
Medlem
Skrivet av Synshaders:

Tja, dessa koder var ju direkt exempel från boken. Tycker inte att dom förklarar allt bara. Fattar bara inte varför det inte kunde stå i boken hur programmen används när de körs. Var skulle man tagit reda på det liksom. Om de gör sånna missar så har de ju ingenting att lära ut...

K&R är väl inte i första hand tänk som en bok för nybörjare att lära sig programmera utan snarare en specifikation av C för de med erfarenhet av programmering i andra språk. Dennis Ritchie, en av författararna till boken, är han som utvecklade C.

Permalänk
Medlem

Koden är inte tänkt för att användas på filer då? Pröva att skapa en fil och skriv några rader i den, sen startar du programet med < filnamn efter (så t.ex. "myprogram.exe < myfile", alternativt "./myprogram < myfile" om du sitter i UNIX).

Permalänk
Hedersmedlem
Skrivet av Dalton Sleeper:

hur ställer jag in så mitt fönster godtar ctrl+z då? det ger mig bara resultatet ovan så kan alltså inte avbryta loopen nu, dvs inte skriva ut resultatet enligt hans originalprogram. kör vs2010 c++.

...

edit: ctrl+c verkar döda hela appen, ctrl+z verkar fungera nu av nån anledning med entertryck efter. lite kinkiga grejer när man är van vid c++

C++ har ingenting med saken att göra, det är helt upp till terminalen (eller ja, kommandotolken i Windows).

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem
Skrivet av m0REc:

C++ har ingenting med saken att göra, det är helt upp till terminalen (eller ja, kommandotolken i Windows).

Tänkte först att det kanske kunde ha något med nån inställninga att göra, ev tangentbordslayout och språk man har inställt... Jag har iaf inte varit med om detta "problem" om man nu kan kalla det så. ctrl+d verkar inte heller fungera som elgot föreslog men iaf fungerar ctrl+z nu med enter efter. Kanske har man så dåligt minne men hade för mig att den ska hoppa ut själv utan enter. Har inte behövt skriva så många program som är viktiga som behandlar denna inmatning då det har blivit mer forms & annan grafisk input.

Ja ja, känns ju bra att man kikade in i denna tråd ifall man ska skriva nån console app och någon gillar att trycka dessa kombinationer Vet fortfarande inte hur jag ska skydda mot ctrl+c om man skulle behöva det, vill ju hellre visa ett felmeddelande än en fin krash.

Permalänk
Medlem

Jag vet inte hur det är i Windows, men i UNIX så ger Ctrl+C en SIGINT signal som du kan fånga upp och göra något med i programmet.

#include <signal.h> #include <stdio.h> #include <stdlib.h> void die() { printf("Shutting down...\n"); exit(1); } int main() { signal(SIGINT, (*die)); while (1); return 1; }

Permalänk
Hedersmedlem
Skrivet av Thomas H:

Jag vet inte hur det är i Windows, men i UNIX så ger Ctrl+C en SIGINT signal som du kan fånga upp och göra något med i programmet.

Såhär säger msdn:

Citat:

Note SIGINT is not supported for any Win32 application, including Windows 98/Me and Windows NT/2000/XP. When a CTRL+C interrupt occurs, Win32 operating systems generate a new thread to specifically handle that interrupt. This can cause a single-thread application such as UNIX, to become multithreaded, resulting in unexpected behavior.