Я написал этот код для чтения значений из файла, и если значением чтения является ";"есть, все значения, которые встречались до сих пор и были записаны в строку, должны быть записаны в поле массива указателей
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <windows.h>
#define SIZE_STRINGS 100
#define SIZE_ZS 15
int index_drei;
char *laenge_drei[SIZE_STRINGS];
char* string_to_pointer(char []);
void laengen_block_nach_siegen_ordnen();
void spielweg_nach_laenge_des_spieweges_ordnen(bool spieler)
{
int i,
laenge,
index_zs;
char buchstabe,
zs[SIZE_ZS],
zs2[SIZE_ZS],
*zs_p;
bool akt_laenge_auslesen;
FILE * fp;
if(spieler)
fp = fopen("Anlagen\\spielweg_spieler.txt", "r"); //Datei öffnen
else
fp = fopen("Anlagen\\spielweg_ai.txt", "r"); //Datei öffnen
akt_laenge_auslesen = true;
index_drei = 0;
laenge = 0;
index_zs = 0;
for(i = 0; i < SIZE_ZS; i++)
{
zs[i] = 0;
}
if(fp == NULL)
{
}else
{
while((buchstabe = fgetc(fp))!=EOF)
{
zs[index_zs] = buchstabe;
index_zs++;
if(akt_laenge_auslesen == true && buchstabe == '-')
akt_laenge_auslesen = false;
else if(akt_laenge_auslesen)
laenge = buchstabe - '0';
else if(buchstabe == ';')
{
if(laenge == 3)
{
laenge_drei[index_drei] = string_to_pointer(zs);
/*Firts value*/
strcpy(zs2, laenge_drei[0]);
printf("%s", zs2);Sleep(1000);
index_drei++;
}
akt_laenge_auslesen = true;
laenge = 0;
index_zs = 0;
for(i = 0; i < SIZE_ZS; i++)
{
zs[i] = 0;
}
}
}
/*Second value*/
strcpy(zs2, laenge_drei[0]);
printf("%s", zs2);Sleep(1000);
fclose(fp);
}
}
char* string_to_pointer(char string[])
{
return string;
}
Если я запишу значение из "length_drei [0]" с помощью strcpy в строке"zs2", я получаю:
- / * первое значение * / правильное значение
- / * второе значение * / неправильное значение (один пробел)