From owner-freebsd-questions@FreeBSD.ORG Tue Oct 23 22:33:29 2007 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE47216A421 for ; Tue, 23 Oct 2007 22:33:29 +0000 (UTC) (envelope-from bruce@cran.org.uk) Received: from muon.bluestop.org (muon.bluestop.org [IPv6:2001:41c8:1:548a::2]) by mx1.freebsd.org (Postfix) with ESMTP id F41A713C481 for ; Tue, 23 Oct 2007 22:33:28 +0000 (UTC) (envelope-from bruce@cran.org.uk) Received: from muon.draftnet (unknown [IPv6:2a01:348:10f:1::5]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by muon.bluestop.org (Postfix) with ESMTP id ACE3D30180; Tue, 23 Oct 2007 23:33:27 +0100 (BST) Message-ID: <471E7695.1050702@cran.org.uk> Date: Tue, 23 Oct 2007 23:32:53 +0100 From: Bruce Cran User-Agent: Thunderbird 2.0.0.6 (X11/20070809) MIME-Version: 1.0 To: Derek Ragona References: <200710232044.53240.h.schmalzbauer@omnisec.de> <20071023220134.3abd635e@epia-2.farid-hajji.net> <20071023162454.93851854.wmoran@potentialtech.com> <200710232324.09851.h.schmalzbauer@omnisec.de> <6.0.0.22.2.20071023171535.0244b420@mail.computinginnovations.com> In-Reply-To: <6.0.0.22.2.20071023171535.0244b420@mail.computinginnovations.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Cc: freebsd-questions@freebsd.org, Harald Schmalzbauer Subject: Re: Mentor for C self study wanted X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Oct 2007 22:33:29 -0000 Derek Ragona wrote: > At 04:24 PM 10/23/2007, Harald Schmalzbauer wrote: >> Am Dienstag, 23. Oktober 2007 22:24:54 schrieb Bill Moran: >> > In response to cpghost : >> > > On Tue, 23 Oct 2007 20:44:52 +0200 >> > > >> > > Harald Schmalzbauer wrote: >> > > > The first one was for example the attached code: Why does it >> segfault? >> > > >> > > Mailman ate the attachment... Can't see it here. >> > >> > I may be out of line, but I think if you're using FreeBSD as your >> > learning platform, that it wouldn't be a problem to ask this list. >> >> Harald Schmalzbauer wrote: >> > > Am Dienstag, 23. Oktober 2007 21:43:52 schrieben Sie: >> > >>> Hello Aryeh, >> > >>> >> > >>> I'm willing to pay fair fees, but are you interested in "micro >> payment" >> > >>> ;) ? >> > >> >> > >> For other reasons I love micro payments. >> > >> >> > >>> Serious, I'll have the one or other short question per week (I'm >> > >>> usually busy, just making spare time lessons from my book (UTC-1 >> spare >> > >>> time)). >> > >> >> > >> Just so I know what level to present on what is your background >> in CS >> > >> and programming? >> > > >> > > CS?? >> > > I'm able to solve problems analytically, but I don't know any >> language >> > > really well. >> > > I know bourne shell, csh, pascal, and basic. And a tiny bit asm, but >> > > that's been on ZX81. >> > >> > Although, you'll have to include your code inline to get past the >> > sanitizers. >> >> Thanks all, >> >> here was my example, just for completeness, I found mentors for my needs. >> >> Thanks a lot to all! >> >> >> #include >> >> void main() >> { >> short nnote; >> >> // Numerischen Notenwert einlesen >> printf("Bitte numerischen Schulnotenwert eingeben: "); >> scanf("%d",&nnote); >> >> switch (nnote) >> { >> case 1: printf("Die Note %d entspricht sehr gut.",nnote); >> break; >> case 2: printf("Die Note %d entspricht gut.",nnote); >> break; >> case 3: printf("Die Note %d entspricht befriedigend.",nnote); >> break; >> case 4: printf("Die Note %d entspricht ausreichend.",nnote); >> break; >> case 5: printf("Die Note %d entspricht mangelhaft.",nnote); >> break; >> case 6: printf("Die Note %d entspricht ungenügend.",nnote); >> break; >> default: printf("%d ist keine zulässige Schulnote!"); >> } >> printf("\n"); >> } >> >> P.S.: >> I found that declaring nnote as int soleves my problem, but I couldnÄt >> understand why. >> Another one was the result of default: nnote was -1077942208 instead >> of 9 for >> example. > > if you check the man page on scanf: > d Matches an optionally signed decimal integer; the next pointer must > be a pointer to int. > > You shouldn't try to put a short into an int. Always declare the > correct size for variables. Your segv is because scanf was trying to > put an int where it won't fit. > > You will get the same result if you go off the end of an array. > > -Derek > It's well worth increasing the number of warnings enabled when writing C code, to catch any errors early on. -Wall catches this sort of mistake. Compiling your code gives the following output: > gcc -Wall test.c -o test test.c:4: warning: return type of 'main' is not 'int' test.c: In function 'main': test.c:9: warning: format '%d' expects type 'int *', but argument 2 has type 'short int *' -- Bruce Cran