ich in Text aus einer Eingabedatei lese. Ich habe Text getrennt von Noten, dhSplit eine Datei von Text in Trennzeichen und ein separaten Zahlen und Text in c
John Doe 100 95 67 85
jane doe 67 78 99
und im Durchschnitt dann die Zahlen. Ich kann mit strtok durch die Leerzeichen trennen, aber wie kann ich sagen, wenn ich eine ganze Zahl habe? Ich muss das Lesen von Namen und Ganzzahlen in 2 Funktionen aufteilen. Mein Code, um es zu lesen funktioniert, aber ich muss am Ende jedes Namens aufhören. Ich habe versucht, Zahlen zu verwenden, die in Strings umgewandelt wurden und strcmp verwenden, aber es hat nicht funktioniert.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read_reverse_write(FILE * ptr_file, FILE * op);
void write_and_avarage(int * fp, char * op);
//int checker(char *token);
int main(int argc, char** argv) {
FILE *fp;
FILE *op;
//opens quiz and checks and checks to make sure it did
fp = fopen("quiz.txt", "r");
if (fp == NULL) {
printf("Error opening file");
return (-1);
}
//opens op and checks that it did
op = fopen("output.txt", "w");
if (op == NULL) {
printf("Error opening file");
return (-1);
}
// runs read reverse write
read_reverse_write(fp, op);
fclose(fp);
fclose(op);
return (EXIT_SUCCESS);
}
void read_reverse_write(FILE * ptr_file, FILE * op) {
char buf[1000];
char *token;
const char delim[2] = " ";
fgets(buf, 1000, ptr_file);
token = strtok(buf, delim);
while (token != 100) {
fprintf(op, "%s ", token);
token = strtok(NULL, delim);
}
}
/*void write_and_avarage(int * fp, char * op) {
}
int checker(char *token) {
char *arr[102];
char ph[4];
for (int p = 0; p < 100; p++) {
if (p < 10) {
snprintf(ph, 1, "%d", p);
arr[p] = ph;
} else if (p < 99) {
snprintf(ph, 2, "%d", p);
arr[p] = ph;
} else if (p = 100) {
snprintf(ph, 3, "%d", p);
arr[p] = ph;
}
}
for (int z = 0; z < 100; z++) {
if (strcmp(token, arr[z]) == 1) {
return 1;
} else {
z++;
}
return 0;
}
}
*/
Überprüfen Sie die C-Standardbibliothek für die Umwandlung von Zeichen in int. Hinweis * atoi * – t0mm13b
versuchte, dass mein Compiler es nicht als eine gültige Funktion reconcize – John
Wenn Sie das erste Zeichen jedes Token (wenn nicht 'NULL') von' strtok' erzeugt sehen, können Sie sagen, ob es 'isalpha()' ist oder 'isdigit()' im ersten Fall den Namen erstellen, im zweiten Fall eine weitere Punktzahl. –