Ich habe eine Datei, die wie folgt aussieht:malloc für char Zeiger und printf
ATOM HIS
ATOM TRP
ATOM PHE
ich die erste Spalte ausdrucken möchten, finden Sie meine C-Code:
#include<stdio.h>
#includ<stdlib.h>
void main
{
FILE *fp;
fp=fopen("xyz","r");
char *atm,*res;
char buff[200];
while(fgets(buff,sizeof (buff),fp)!=NULL){
i++;
}
rewind(fp);
atm=(char*)malloc(i * sizeof (char*));
res=(char*)malloc(i * sizeof (char*));
while(fgets(buff,sizeof (buff),fp)!=NULL){
fscanf(fp,"%s %s",&atm[i],&res[i]);
i++;
}
for(j=0;j<i;j++){
printf("%s\n",atm);
}
Ich würde erwarten, die folgende Ausgabe:
ATOM
ATOM
ATOM
Aber es nicht kompiliert und sagt, dass:
warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’
daher in printf
Aussage habe ich &
-atm
(das heißt & atm statt atm) hinzugefügt. In diesem Fall stellt der Code gut, aber gibt die folgende Ausgabe:
AAAAAAAAAAAAAAAATOM AAAAAAAAAATOM AAAAAAAATOM
Ich werde es begrüßen jeden Vorschlag in Bezug auf diese.
[Bitte lesen Sie diese Diskussion darüber, warum nicht der Rückgabewert von 'malloc()' und Familie in 'C' umgewandelt werden soll. (Http://stackoverflow.com/q/605845/2173917). –
Kann das nicht kompilieren. – BLUEPIXY
Sie reservieren (malloc) Platz für einen Char-Zeiger, warum? – tkausl