Ich habe diese Daten in der DateiWert in Schleife zurückkehren tut
ATOM 1 N MET A 1 25.909 16.164 -8.037
ATOM 2 CA MET A 1 25.498 14.786 -8.206
ATOM 3 C MET A 1 26.612 13.934 -8.806
ATOM 4 O MET A 1 27.442 14.402 -9.588
dies mein vollständiger Code ist
#include<stdio.h>
#include<math.h>
typedef struct prot {
char atom[10];
int atomno;
char site[10];
char residue[10];
char chain;
int residueno;
float x, y, z;
} Td;
int main()
{
FILE*fd;
fd=fopen("2zoi.pdb","r+");
Td data[1300];
char buffer[1300];
int a=0;
while(fgets(buffer, 1300, fd))
{
sscanf(buffer, "%s %d %s %s %c %d %f %f %f",data[a].atom,&data[a].atomno,data[a].site,
data[a].residue,&data[a].chain,&data[a].residueno,&data[a].x, &data[a].y, &data[a].z);
printf("%s %d %s %s %c %d %6.3f %6.3f %6.3f \n",data[a].atom,data[a].atomno,data[a].site,
data[a].residue,data[a].chain,data[a].residueno,data[a].x, data[a].y, data[a].z);
a++;
}
//---user input
int fr,sr;
int fa,sa;
int i=0;
float x1,x2,y1,y2,z1,z2;
float distance=0;
printf("Enter first no of atom :");
scanf("%d",&fa);
printf("Enter second no of atom :");
scanf("%d",&sa);
while(data[i].atomno>=0)
{
if(fa==data[i].atomno)
{
x1=data[i].x;
y1=data[i].y;
z1=data[i].z;
}
else if(sa==data[i].atomno)
{
x2=data[i].x;
y2=data[i].y;
z2=data[i].z;
}
i++;
}
printf("%f %f %f",x1,y1,z1);
printf("%f %f %f",x2,y2,z2);
//distance= sqrt(pow((x2 - x1), 2) + pow((y2 - y1), 2) + pow((z2 - z1), 2));
//printf("%6.3f",distance);
return 0;
}
das Problem ist in diesem Teil
printf("%f %f %f",x1,y1,z1);
printf("%f %f %f",x2,y2,z2);
ich versuche zurückzukehren zu Werten von der obigen Schleife, wo der Wert für x1, y1, z1 für das erste Atom und x2, y2, z2 für das zweite Atom ist.
wenn i Eingang 3 und 4 gibt es
26.612 13.934 -8.806
27.442 14.402 -9.588
beantworten, die korrekt ist. aber wenn ich 1 und 2 eingib, gibt es eine müllantwort. es scheint, als ob ich Nummer 2 auch Nummer 10 eingeben könnte. Habe ich einen Fehler gemacht?
'while (Daten [i] .atomno> = 0)': 'Td Daten [1300];' es ist nicht initialisiert. – BLUEPIXY
Tun Sie sich einen Gefallen und prüfen Sie, ob die verschiedenen 'scanf()' - Familienfunktionen die erwartete Anzahl konvertierter Werte zurückgeben. Im Allgemeinen ist es eine gute Idee zu testen, dass Eingabefunktionen funktionieren. –
Bitte bearbeiten Sie Ihren Beitrag und korrigieren Sie die Einrückung. – Lundin