Struct dem Unterprogramm übergeben in C?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Struktur muss bekannt sein, bevor man diese verwendet.

Wenn du mit Zeigern arbeitest, verwende den richtigen Operator.

Wenn deine Funktion einen Zeiger verwenden, übergibst du einfach den Zeiger.

Wenn du Speicher allokierst, musst du diesen auch wieder frei geben.

http://pastebin.com/XNverdfN

War das bei Pointern nicht mit pointer->Wert ? Also den Zeiger ohne Stern, Minus Größer und dann das Strukturelement.

Fehler in C?

Hey, Community.. Ich bin sehr neu in der Programmiersprache C..

Ih habe ein simples Programm gemacht, aber finde den Fehler nicht...

Es ist sicher ein Noob-Fehler..

Log:

/buildSources/projectmar14a.cpp: In function 'int main()':

/buildSources/projectmar14a.cpp:15:9: error:

expected ';' before 'return'

return 0;

^

Return code is not 0

Mein Code:

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

int forlol(int a) {
        for (; a < 15; a++) {
        return a;
        }
      }

int main() {
    int baum = 10;
    baum = forlol(baum);
    printf("%d")
        return 0;
    }

...zur Frage

Unicode/ASCII in C mit printf() in der Konsole darstellen.

Servus, ich möchte mit der printf()-Funktion Unicode/ASCII in der Konsole darstellen (Programmiersprache: C). ASCII wird problemlos dargestellt, bei Unicode werden fehlerhafte Zeichen dargestellt bzw. nicht die Zeichen, die ich möchte.

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

int main()
{
    printf("AE: \x8E\n");
    printf("OE: \x99\n");
    printf("UE: \x9A\n");
    printf("SS: \xE1\n");
    char h_doubleline = '\u2550';
    char v_doubleline = '\u2551';
    printf("Doppelte horizontale Linie: %c\n", h_doubleline);
    printf("Doppelte vertikale Linie: %c\n", v_doubleline);
    int input = getchar(); //Eingabeanfrage, damit das Programm nicht beendet wird.
    return 0;
}

Wie kann ich Unicode richtig einfügen, sodass die richtigen Zeichen angezeigt werden? MfG.

...zur Frage

Warum brauche ich bei scanf das \n? Wozu ist das gut?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TEXTSIZE 20
 
typedef struct LISTENEINTRAG {
  char szText[TEXTSIZE];
} LISTENEINTRAG;
 
typedef struct {
  LISTENEINTRAG eintrag[3];
  int index;
  int iGroesse;
} LISTE;
 
void push(LISTE* Liste, char szText[TEXTSIZE]) {
  // ->szText
  strcpy(((Liste->eintrag + Liste->index)).szText, szText);
  Liste->index++;
  printf("Neue Groesse %li byte.\n", sizeof(Liste));
}
 
void pop(LISTE* Liste) {
  Liste->index--;
  printf("Eintrag gefunden mit Text: %s", ((Liste->eintrag + Liste-> index)).szText);
  strcpy(((Liste->eintrag + Liste->index)).szText, "");
  printf("Neue Groesse %li byte.\n\n", sizeof(Liste));
}
 
int main() {
  LISTE Liste;
  Liste.iGroesse = sizeof(Liste);
  Liste.index = 0;
 
  char puffer[TEXTSIZE];
  char* c = NULL;
  int iWeiter = 0;
 
  do {
    printf("Neuer Eintrag (1) oder beenden (0)?\n");
    scanf("%i\n", &iWeiter);

    if (iWeiter) {
      printf("Zu speichernden Text eingeben: ");
      fflush(stdin);
      c = fgets(puffer, TEXTSIZE, stdin);

      if (c == NULL) {
        return 1;
      }

      push(&Liste, puffer);
    }
  } while (iWeiter);
   
  do {
    pop(&Liste);
  } while (Liste.index > 0);

  return 0;
}

Warum brauche ich bei

scanf("%i\n", &iWeiter);

das \n? Wozu ist das gut?

...zur Frage

Globale Structs in C- wie/wo deklarieren/definieren?

hey habe gerade folgendes Problem beim Strukturieren meines C-Programms:

Ich habe eine main.c und 4 weitere dateien helfer1.c, helfer1.h und helfer2.c,helfer2.h. Nun arbeite ich aber mithilfe von 2 Strukturen: struct Mitglieder und struct Paarungen, das Problem ist, dass ich den struct Mitglieder sowohl in der helfer1-hilfsfunktion als Parameter übergebe als auch in der helfer2-hilfsfunktion. Ansonsten hätte ich die Definition der Structs einfach in die jeweiligen Header geschrieben, aber ich kann ja nicht zweimal dasselbe definieren. Momentan stehen die Definitionen der beiden Structs in der main.c außerhalb der main()-Funktion,aber das klappt leider nicht, dachte es sind dann direkt globale structs. Wie muss ich das jetzt angehen,wenn ich wie gesagt die structs in beiden Funktionen brauche und in der main beide Funktionen aufrufe?

Mfg

struct Mitglied{    char vorname[40];    char nachname[40];    int ranking;};
struct Paare{    struct Mitglied mA;    struct Mitglied mB;    int rankingSumme;};
helfer2.h: extern void paarungenBilden(const int anzahlA, const struct Mitglied mitgliederA[], const int anzahlB, const struct Mitglied mitgliederB[],struct Paare paarungen[]);
helfer1.h: extern void mitgliederEinlesen(const char dateiname[], const int anzahl, struct Mitglied mitglieder[]);
...zur Frage

C++ SDL2 geht nicht ---> Ich mache alles so wie erklärt!

Heyho Leute ich Programmiere derzeit mit C++ wollte jetzt mit Grafiken anfangen und habe SDL2 installiert mit Visualstudio expres 2010

Dieses Tutorial habe ich mir dazu angesehen:

https://www.youtube.com/watch?v=p62jSCqN_Bw&feature=iv&src_vid=6UlIYSLkg1M&annotation_id=annotation_217545649

Doch bei mir ist Immernoch #include Rot unterstrichen und sagt mir das der Pfad nicht Exestiert oder das SDL2 nicht aufzufinden ist.

dieses ist der Startcode den ich verwende:

include

int main(int argc, char* args[])

{ return 0; }

.

.

wen ich nun über das Rot unterstrichene #Include gehe steht dort bei mir: Error: Die Datei "Quelle" kann nicht geöffnet werden "SDL.h".

.

Ich habe beide Möglichkeiten ausgetestet main.cpp in Header Datein und einmal in Quelldatein.

Wen ihr noch Fragen habt beantworte ich diese auch!

Danke schonmal für alle antworten! :D

...zur Frage

Kann in diesem Programm die Rede von undefiniertem Verhalten sein C++?

Hier ist mein Code:

#include <iostream>
using namespace std;
int* pReturn() 
{   
int zahl = 10;   
int* pzahl = &zahl;   
return pzahl; 
}
int main() 
{   
cout << "Hello world!" << endl;   
int* pointer = pReturn();   
*pointer = 15;   
cout << *pointer;   
return 0; 
}

Also ich rufe ganz simpel eine Funktion auf und lasse sie einen Pointer auf eine Variable zurückgeben, die in der Funktion deklariert und initialisiert wird. Sollte die Variable aber nach dem reurn Befehl nicht gelöscht, bzw. freigegeben werden, sodass der Pointer auf eine Variable zeigt, die sich jederzeit durch andere Programme verändern könnte oder merkt das der Compiler schon von vorne rein und löscht diese Variable nicht? Aufjedenfall kann ich auch nach dem return Befehl in der Funktion die Variable per Pointer modifizieren und ausgeben. Ich versteh das irgendwie nicht..

...zur Frage

Was möchtest Du wissen?