-1
我在C中創建一個函數void N
讀取一個文件和第四個然後每第六行是一個數字,我需要從字符串轉換爲雙倍,並將它們放到新的數組.. ..但每一個新的號碼,我在陣列上重寫絆倒所有已經存在的數字'雖然'一直重寫數組
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
void V(int *id,int i,int *praca, double *plat,int *datum, FILE **f)
{
char meno[2000],priezvisko[2000];
if ((*f = fopen("zam.txt", "r")) == NULL)
{
printf("Neda sa otvorit");
// koniec programu
return ;
}
while(//vypis informacii zamestnancov
fscanf(*f,"%d %s %s %d %lf %d",&id[i],&meno[i],&priezvisko[i],&praca[i],&plat[i],&datum[i])>0)
{
printf(" osobne cislo zamestnanca:%d\n meno priezvisko:%s %s\n administrativa/vyrobny pracovnik:%d\n plat:%g\n datum:%08d\n\n",id[i],&meno[i],&priezvisko[i],praca[i],plat[i],datum[i]);
i++;
}
}
void N(int i,double plat[], FILE *f)
{
rewind(f);
int j=0,k=0;
double *platy[1800];
char line[1800];
int suma = 0;
int count = 0;
int lineNumber = 3;
double val;
double d;
while(fgets(line, sizeof(line), f)!= NULL)
{
if (count == lineNumber)
{
suma++; //pocet platov
count++;
lineNumber+=6;
platy[i]=malloc(sizeof(line));
printf("i : %d\n",i);
//printf("%s",line);
val = atof(line);
//printf("%g\n",val);
platy[i] = &val;
val = *platy[i];
d = *platy[0];
printf("array: %g\n",val);
printf("array 0: %g\n",d);
i++;
}
else
{
count++;
}
printf("%d. %d\n",count,suma);
}
for (j=0 ; j<suma; j++) {
val = *platy[j];
printf("%g\n",val);
}
}
int main() //MAIN
{
int i=0,id[1800],praca[1800],datum[1800]; //deklaracie
char *meno[1800],*priezvisko[1800],z;
double plat[1800];
FILE *f;
while((z = getchar())!='K')
{
if(z == 'V')
V(id,i,praca,plat,datum,&f);
if(z == 'P')
P(i,praca,plat,datum,f);
if(z == 'N')
N(i,plat,f);
}
return 0;
}
什麼陣列?你的代碼非常混亂。 – cpatricio
歡迎來到Stack Overflow!請查看我們的[SO問題清單](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)來幫助你提出一個好問題,從而得到一個很好的答案。 –
'platy [i] = &val;'顯然是錯誤的。 'platy [i]'是一個指向'char'數組的指針,但'val'是一個'double'。你也正在泄漏你用'platy [i] = malloc(sizeof(line));'分配的內存。 – Barmar