Compiler Problem

enr00

enr00

Routinier
Ich habe folgenden Source Code, und kann den irgendwie net kompilieren, Compiler gibt immer Fehler aus, wo meiner Meinung nach keine sind.

Code:
#include <stdio.h>

void make(char *hash){

      for(int i=0;i < strlen(*hash);i++){

      printf("%C",hash[i]);


      }


}

int main(int argc, char **argv[])
{
  char z[2] = {'a','b'};

  make(&z);
  return 0;
}
 
Fehler Nr1: Die Deklaration der Variable 'i' darf nicht innerhalb des 'for' erfolgen.
Fehler Nr2: Für strlen() muss string.h includiert werden.
Fehler Nr3: Du kannst keinen Dereferenzierten Pointer als Character-Pointer übergeben.
 
In C++ benutzt man aber keine stdio.h sonder iostream.
 
Sind aber noch ein paar logische Fehler drin:

Wenn du die Adresse eines Arrays uebergibst, dann kein & vor den Namen, sondern den Arraynamen selbst, in deinem Fall nur
Code:
make(z);
Der Name eines Arrays ist gleichzeitig ein Pointer auf den Beginn des Feldes.
Weiterhin musst du in C die Laenge eines Feldes an Funktionen uebergeben, da diese Information bei der Uebergabe verloren geht. In diesem Fall geht es allerdings anders, da man einen String mit dem \0 terminiert, weswegen das noch hinzugefuegt werden muss.

So laeufts jedenfalls:
Code:
#include <stdio.h>
#include <string.h>

void make(char hash[]) {
	int i;
	for(i=0;i < strlen(hash);i++) {
		printf("%C",hash[i]);
	}
}

int main(int argc, char **argv[]) {
	char z[3] = {'a','b', '\0'};
	make(z);
	return 0;
}
 

Ähnliche Themen

C Code Hilfe!!! gesucht bei Dezimalzahl in Binärzahl for loop

Unix Webserver mit HTML Seite erstellen

String auf Konsole ausgeben

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

GCC liefert in Eclipse Kompilierfehler

Zurück
Oben