Array mit function ändern

  • Themenstarter Themenstarter Bgag
  • Beginndatum Beginndatum
B

Bgag

Hallo!
Ich bin leider ein absoluter C Neuling und versuche nun schon seit längerem vergeblich mit Hilfe einer Funktion die Werte in einem übergebenen Array zu ändern. Das müsste ja über Pointer möglich sein, jedoch will es mir nicht gelingen. Wäre nett, wenn sich mal jemand meinen Quellcode ansehen könnte.
MfG, Andy

//EDIT: Einen Teil des Problems konnte ich nun lösen, jedoch erhalte ich beim Ausführen des Programms immer Segmentation fault.

C:
/* The first c programm "hello world!" */
#include <stdio.h>
#include <string.h>

/* the main method */
int main(void)
{
	/* load the chess field */
	char field[8][8];

	/* fill chess field */
	create(field);

	/* init counter */
	short i, j;

	/* loop over all field columns */
	for(i=0; i<8; i++)
	{
		/* loop over all field rows */
		for(j=0; j<8; j++)
		{
			printf("%s", field[j][i]);
		}
	}

	return 0;
}



int create( char (*field)[8] )
{
	/* init counter */
	register short i, j;

	/* loop over all field columns */
	for(i=0; i<8; i++)
	{
		/* loop over all field rows */
		for(j=0; j<8; j++)
		{
			if(j==1)
			{
				field[j][i] = 'b';
			}

			else if(j==6)
			{
				field[j][i] = 'B';
			}

			else if(j==0)
			{
				switch(i)
				{
					case 0:
						field[j][i] = 'T';
						break;
					case 1:
						field[j][i] = 'S';
						break;
					case 2:
						field[j][i] = 'L';
						break;
					case 3:
						field[j][i] = 'D';
						break;
					case 4:
						field[j][i] = 'K';
						break;
					case 5:
						field[j][i] = 'L';
						break;
					case 6:
						field[j][i] = 'S';
						break;
					case 7:
						field[j][i] = 'T';
						break;
					default:
						break;
				}
			}

			else if(j==7)
			{
				switch(i)
				{
					case 0:
						field[j][i] = 't';
						break;
					case 1:
						field[j][i] = 's';
						break;
					case 2:
						field[j][i] = 'l';
						break;
					case 3:
						field[j][i] = 'd';
						break;
					case 4:
						field[j][i] = 'k';
						break;
					case 5:
						field[j][i] = 'l';
						break;
					case 6:
						field[j][i] = 's';
						break;
					case 7:
						field[j][i] = 't';
						break;
					default:
						break;
				}
			}

			else
			{
				field[j][i] = '*';
			}
		}
	}

	return;
}
 
Zuletzt bearbeitet von einem Moderator:
Hi,

Hab deinen Code mal in meinen Compiler eingelesen und habe Folgendes festgestellt:
Wo ist dein Funktionsprototyp?

Hast du den seperat irgendwo stehen?

Dann muss deine Funktion einen Wert zurückgeben,

return;

tut das nicht
 
Zuletzt bearbeitet:
Dann muss deine Funktion einen Wert zurückgeben,

return;

tut das nicht
Müssen nicht nur wäre es natürlich schöner void zu benutzen.
Du hast überhaupt kein wirklichen Pointern du musst die adresse ja auch übergeben.
Hab mir ddas nur eben schnell überflogen soweit ich das gesehen hab müsstest du auch die adresse mit
Code:
&array
übergeben.
Ach und dann kannst du den Pointer weiterhin auch nicht als normales array mit
Code:
array[j][k]=....
behandeln sonder eben als Pointer.
Schau dir im I-net mal Zeiger-Operationen an

MfG Nik
 
Zurück