Seite 1 von 1

Frage für Datenstruktur

Verfasst: Mo Feb 22, 2016 11:48 pm
von kingrone2412
hallo Leute,
ich bin ganz Anfänger in IT und Ausländer. Deshalb habe ich viele Problem mit der Programmierung. Wenn ich einen Ausgabe auf Deutsch lese, könnte ich nicht genau verstehen. Könntet ihr mein Ausgabe korrigieren ? Vielen Dank.

Meine Aufgabe:
Erstellen Sie einen Datentyp, der ein Verzeichnis nachempfunden ist. Die Datenstruktur soll dabei den Name, User-ID, ID ( Gruppe), sowie lese, schreib oder Darstellung Recht beinhalten. Zeichnen Sie die Struktur für Eigentürmer.

Meine Lösung:

Code: Alles auswählen

#include<stdio.h>
#include<string.h>

struct Information
{
  char Name[50];
  int User_ID;
  int Gruppe_ID;
};

int main()
{
  struct Information Eingentuemer;
 
  strcpy_s(Eingentuemer.Name, "ABC");
  Eingentuemer.User_ID = 1234567;
  Eingentuemer.Gruppe_ID = 7654321;

  printf("Der Name des Eingentuemer ist: %s\n", Eingentuemer.Name);
  printf("User ID: %d\n", Eingentuemer.User_ID);
  printf("Gruppe ID: %d\n", Eingentuemer.Gruppe_ID);

  return 0;
}
Könntet ihr mein Ausgabe korrigieren ? :idea: :arrow: :mrgreen:


Edit by Xin: Codetags hinzugefügt

Re: Frage für Datenstruktur

Verfasst: Di Feb 23, 2016 2:40 pm
von knoppi
guckst du hier

Viel Erfolg :)

Knoppi

Edit by Xin: Fullquote von vorherigem Posting entfernt

Re: Frage für Datenstruktur

Verfasst: Di Feb 23, 2016 6:12 pm
von Xin
kingrone2412 hat geschrieben:hallo Leute,
Meine Aufgabe:
Erstellen Sie einen Datentyp, der ein Verzeichnis nachempfunden ist. Die Datenstruktur soll dabei den Name, User-ID, ID ( Gruppe), sowie lese, schreib oder Darstellung Recht beinhalten. Zeichnen Sie die Struktur für Eigentürmer.

Code: Alles auswählen

struct Information
{
  char Name[50];
  int User_ID;
  int Gruppe_ID;
};
...

  strcpy_s(Eingentuemer.Name, "ABC");
Könntet ihr mein Ausgabe korrigieren ?
Kompiliert das überhaupt - und wenn ja auf welchem Compiler? ^^

Grundsätzlich ist das schon richtig, wie Du das machst, aber strcpy_s verlangt drei Argumente:

Code: Alles auswählen

errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource);
Das zweite Argument ist die Länge des Zielbuffers, also 50. Damit prüft strcpy, dass der String "ABC" nicht länger ist als der Zielbuffer, er also irgendwas anderes im Speicher überschreibt.

Code: Alles auswählen

strcpy_s( Eingentuemer.Name, 50, "ABC" );
sollte also funktionieren.

War das das Problem? Ansonsten bitte deine Erwartung schildern und was Du stattdessen siehst.


@Knoppi: strcpy_s gehört nicht zum Standard - soweit ich weiß. Für die Funktion haben wir daher kein Beispiel. Ansonsten bitte kein Fullquote, wenn nicht erforderlich. :)

Re: Frage für Datenstruktur

Verfasst: Di Feb 23, 2016 6:55 pm
von knoppi
Xin hat geschrieben:
kingrone2412 hat geschrieben:hallo Leute,

@Knoppi: strcpy_s gehört nicht zum Standard - soweit ich weiß. Für die Funktion haben wir daher kein Beispiel.
Ja ;)
und es kompiliert auf gcc

gibts sowas wie

Code: Alles auswählen

 oder [code=c++] ?
Nur ne Frage... wegen dem durchgehendem "hoffnungsvollem" Grün auf weißem 
Hintergrund. Wenn nicht ist nur ne Frage und Entschuldigung wg. off topic...

Re: Frage für Datenstruktur

Verfasst: Di Feb 23, 2016 9:49 pm
von Xin
knoppi hat geschrieben:gibts sowas wie

Code: Alles auswählen

 oder [code=c++] ?
Nur ne Frage... wegen dem durchgehendem "hoffnungsvollem" Grün auf weißem 
Hintergrund. Wenn nicht ist nur ne Frage und Entschuldigung wg. off topic...[/quote]
Nopes, leider nicht. Ich halte es mal im Hinterkopf.

Re: Frage für Datenstruktur

Verfasst: Mi Feb 24, 2016 6:19 pm
von kingrone2412
@xin: normalerweise ist strcpy_s nicht zum Standar. Aber wenn man strcpy onhe s benutz, muss man noch eine Funktion wie #define _CRT_SECURE_NO_WARNINGS benutze. wenn nicht, ist die Compiler nicht funktioniert. Vielen Dank!

Re: Frage für Datenstruktur

Verfasst: Do Feb 25, 2016 3:29 pm
von knoppi
strcpy_s, strncpy_s usw. sind seit dem Ansi c11 Standard in string.h deklariert, also Standard. Beim GCC ist seit der Version 5.1 (Veröffentlich 2015) Ansi c11 komplett implementiert. Die meisten werden wohl noch mit Ansi c99 arbeiten mit 4.9 oder sowas. Ich habe hier Debian 8.3 jessie, ist soviel wie ich sehe die neueste stable Version mit GCC 4.9.2.

Hier und hier gibt es Beschreibung und Beispiel.