C-Programmierung Hilfestellungen

Status
Für weitere Antworten geschlossen.

Flasche

Cadet 2nd Year
Registriert
März 2014
Beiträge
20
Hallo, da es hier ja nicht möglich ist Aufgaben lösen zu lassen, komme ich jetzt mal mit kleinen Fragen daher...
mittlerweile hab ich mir so grundwissen zugelegt , aber gewisse Dinge hab ich auch mit google nicht in erfahrung bringen können...

meinen Frage:
ich hab jetz zum beispiel : if (f != NULL)....ich da eine Zahl eingebe passts... wie jedoch die If -bedingung aufstellen wenn ich die If für einen Buchstaben benötige?

danke im voraus... und ich werde diesen Theard jetzt für mehre Fragen benutzten wenn ich nicht weiterkomme...
Ich hoffe soo ist es möglich hier um an hilfe zu kommen.

Mfg C-Flasche, Flasche leer!
 
Es geht auch
if( "abc" == "def" ) ...

Wenn du ganze Strings abfragen willst, geht das über

if ( !strcmp(cstring,"abfragestring") )
{
...
} else {
...
}
 
Hi,

die Abfrage (f != NULL) prüft lediglich ob die Variable f leer ist, ob sie nun mit einem oder Mehreren Zahlen/Buchstaben gefüllt ist ist hier egal.

Gruß,
d2boxSteve
 
nein ich meine eigentlich nur " wenn ein beliebiger buchstabe" eingegeben wird... f ist dabei nur meine variable welche ich eigentlich für zahlen benutzte...
danke schonmal!

int e;
int f;

printf("Geben sie maximal %d zahlen ein, Ende mit einem Buchstaben:\n",dim);
e = 1 ;
while (e < 1+dim) {

if (f != NULL){
printf("a[%d]",e++);
scanf("%d", &f);}

else{
printf("programm wird beendet!");
break;}
 
Ja du möchtest einen variablen Inhalt mit einer Zeichenkonstanten vergleichen.

'x'
 
wenn sämtliche buchstaben zum beenden funktionieren sollen, müssen auch alle buchstaben abgefragt werden.

Wenn nichts dagegen spricht würde ich den buchstaben festsetzen z.b q für quit und dann prüfen:

pseudo:

if g=='q' then exit

g damit wir nicht zweimal die selbe variabel haben.
 
Zuletzt bearbeitet:
In c sind doch chars eigentlich nur unsigned integer, die Buchstaben in ASCII Tabellen repräsentieren (?).
Müsste da nicht auch

if (f == 102) ... gehen?
Weiß nur nicht welchen Wert ein nicht initialisiertes Char hat. Falls man es festlegen kann, wäre alles kleiner 0 geeignet.
 
Zuletzt bearbeitet:
sry für mein undurchsichtiges Fragestellen...

#include<stdio.h>
#include<stdlib.h>

int read_ints(int dim)


{
int e;
int f;

printf("Geben sie maximal %d zahlen ein, Ende mit einem Buchstaben:\n",dim);
e = 1 ;
while (e < 1+dim) {


printf("a[%d]",e++);
scanf("%d", &f);

if (f == 102){
printf("programm wird beendet!");
break;}
}

}



int main()
{

int d;

printf("Hallo\n");

printf("Welches dim??\n");
scanf("%d",&d);



read_ints(d);


return 0;
}


ich möchte hier in der funktion mit beliebigem Buchstaben beenden! wenn es denn funktioniert!?
 
Nutz bitte die Code-Tags (
Code:
 und [/CODE) für deinen Code, ist dann viel übersichtlicher! :)
 
Du kannst in C auch so etwas schreiben wie:
Code:
if (c >= 'a' && c <= 'z') ...

Für die Reihenfolge der Zeichen konsultiere eine beliebige ASCII-Tabelle :)
 
Das Problem ist, daß die Anweisung scanf( "%d", &,meineIntVariable); den Wert von meineIntVariable gar nicht verändert, wenn auf stdin etwas angegeben wird, das scanf() nicht als Integer-Wert erkennt (der Rückgabewert von scanf() gibt die Anzahl der erfolgreich geparsten Daten an ... was in diesem Fall bei Befüttern mit einem Nicht-Integer Null sein dürfte ... in anderen Worten, hat nicht geklappt).

Meiner Meinung nach müßte der OP die Eingabe erst mal als Zeichenkette (%s) in ein char-Array einlesen, dann analysieren, ob die Eingabe ein Integerwert ist oder nicht und dann entweder den Integerwert extrahieren oder abbrechen, falls es doch etwas anderes als ein Integer war.


P.S. ODER er könnte direkt den Rückgabewert von scanf() abfragen. Wenn der Null ist, war's wohl kein Integer -> also aussteigen. :)
Ergänzung ()

Flasche schrieb:
int read_ints(int dim)


{
int e;
int f;

printf("Geben sie maximal %d zahlen ein, Ende mit einem Buchstaben:\n",dim);
e = 1 ;
while (e < 1+dim) {


printf("a[%d]",e++);
scanf("%d", &f);

if (f == 102){
printf("programm wird beendet!");
break;}
}

}

Übrigens, deine read_ints()-Funktion ist mit Rückgabetyp int definiert, also hat sie gefälligst auch einen int zurückzugeben. Läßt dir dein Compiler das echt durchgehen, oder hast du gar nicht versucht, das zu kompilieren?
 
Zuletzt bearbeitet: (Jetzt fett in rot ... damit's völlig klar ist)
nee... das kopiliert er schon... nur er kapiert es nicht, was ich haben will;)
 
Code:
#include<stdio.h>
#include<stdlib.h>

int read_ints(int dim)


    {
        int e;
        int f;
        int sum;
        sum=0;
        printf("Geben  sie maximal %d zahlen ein, Ende mit einem Buchstaben:\n",dim);
        e = 1 ;
             while (e < 1+dim) {


            printf("a[%d]",e++);
            scanf("%d", &f);

            sum = sum +f ;

                    if (f= NULL){
                        printf("Programm endet!");
                        break;
                        }
            }
        printf("ergebniss= %d ",sum);

    }



int main()
{

  int d;
    int sum;
  printf("Hallo\n");

  printf("Welches dim??\n");
  scanf("%d",&d);



 read_ints(d);


return 0;
}

wer selbst mal testet, sieht das es ja eigentlich funktioniert... nur möchte ich halt so eine schöne Programm endet Zeile"... und nicht ....
 
Ich habe dir doch 2 Posts weiter oben beschrieben, wie du das lösen könntest. Lesen müßtest du natürlich schon.
Ergänzung ()

Flasche schrieb:
Code:
wer selbst mal testet, sieht das es ja eigentlich funktioniert... [/QUOTE]

Noch mal, eine Funktion die mit Rückgabe-Typ int definiert ist, muß auch einen int zurückgeben. Das ist Fakt, da brauchen wir nicht zu diskutieren.
 
sry... dachte mir es gäbe eine einfachere Lösung... aber vielen dank trotzdem!!!
 
Flasche schrieb:
sry... dachte mir es gäbe eine einfachere Lösung... aber vielen dank trotzdem!!!

Noch viel einfacher geht's doch wohl nicht.


Code:
#include<stdio.h>
#include<stdlib.h>

int read_ints(int dim)
{
	printf("Geben sie maximal %d zahlen ein, Ende mit einem Buchstaben:\n", dim);
	
	int i;
	for ( i = 0; i < dim; ++i )
	{
		printf("a[%d]", i);
		
		int input = 0;
		
		const int success = scanf("%d", &input);
		
		if ( success < 1 )
		{
			printf("programm wird beendet!\n");
			break;
		}
		
		printf( "Eingegebene Zahl war %d.\n", input );
	}
	
	return 0;
}



int main()
{
	int d;

	printf("Hallo\n");

	printf("Welches dim??\n");
	scanf("%d",&d);

	read_ints(d);

	return 0;
}
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben