Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Binggi schrieb:
Sorry memset war falsch, wollte memcpy schreiben. memset ist zum löschen...
Das Tastenturabfrage würde ich dir einen Separaten Thread empfehlen, wenn du nicht schon einen Hast...
Horror ist gemaint, weil du jeder einzelne Member einer Struktur kopierst, anstat mit
memcpy(&artikel[1],&artikel[0],sizeof(Artikeldaten));
alles auf einmal zu kopieren...
und funktioniert hats nicht weil die cpy funktionen einen pointer erwarten, also müsste den variablen & vorangestellt werden. wie hieß das, Variablen refferenzieren oder derefferenzieren?
Hallo Tomahawk,
Jetzt habe ich auch die "Fehlermeldung" verstanden.
int list[SIZE];
for (int * current = list; current < list + SIZE; current++) *current = foo(); // Warning
Nach dem Verlassen der Schleife steht current genau ein Element hinter der Liste.
Also current ist "out of range".
Schön das BoundsChecker das erkennt,
aber dein Code greift nicht auf das Element zu,
also kein Fehler und auch nicht 'unsauber',
nur eine falsche und irritierende Meldung.
Dein 1. Vorschlag löst das Problem.
int list[SIZE];
for (int * current = list; current <= list + SIZE - 1; current++) *current = foo(); // Ok
Wenn SIZE statisch ist würde ich diese Variante nehmen.
Wenn SIZE dynamisch ist, würde ich am code nichts ändern.
Jedoch einen Kommentar einfügen,
bei dem BoundsChecker warscheinlich nicht gut abschneiden würde ...
Viel Erfolg, Gruß Frank
#include <stdio.h>
#define MAX (3)
int main()
{
int a[MAX];
int i = 0, pos = 0;
for (; i < MAX; ++i)
{
printf("a[%i] = ", i);
scanf("%i", &a[i]);
}
for (i = 1; i < MAX; ++i)
{
if (a[i] > a[pos])
{
pos = i;
}
}
printf("Max. Wert %i an der Stelle %i\n", a[pos], pos);
}
Aaah ok, dann habe ich das falsch verstanden. Ich dachte f[i] würde für die Adresse f+i stehen, aber es ist also der Inhalt dieser Adresse. Dankeschön für die schnelle Antwort
Gruß Paul
Danke für die vielen Antworten
char ip_array[1000][20];
int i = 0;
while(!feof(ipfile))
{
fgets(ip_array[i], 20, ipfile);
i++;
}
Funktioniert super!
Gruß Osiron
Soche Konstrukte werden in C häufig verwendet um generisch programmieren zu können.
Irgendwelche zwischenschichten müssen nicht wissen was sich hinter dem void* verbirgt.
z.B. ein generischer container myList hält intern nur einen void*.
Beim reinstecken kenn ich den Typ,
bei rauslesen muss ich casten um drauf zugreifen zu können.
Ich hoffe das war einigermaßen verständlich.
Gruß Frank
Saul schrieb:
Nun müsste ich "nur" noch die Funktion für ein Sortierverfahren erstellen.
Na dann leg mal los. Programmiere eine verkettete Liste, in der die Strukturen sortiert abgelegt, also verkettet werden.
Christiangr schrieb:
Die Funktion load_net ist nicht von mir und "darf" ich nicht ändern.
Die sieht aber wirklich bedenklich aus. Von wo und wem Du die auch hast, ich würde mal nachfragen, warum so abstruser und veralteter Code im Projekt ist.
hätte da mal wieder eine frage, wenn ich versuche das layout für eine tabelle zu berechnen bekomm ich ja geg. am ende einen verschnitt. gibt es da std. lösungen? wird der verschnitt einfach an das erste oder letzte element angehängt?
bsp.:
int verschnitt = 21-floor(21/5)*5;
@edit int verschnitt = 21%5;