Ich muss eine Datei auf dem Desktop (Linux) öffnen. Wenn ich den Ort als String innerhalb der Funktion fopen() schreibe, funktioniert es, aber wenn ich es als Variable übergebe, funktioniert es nicht. Hier ist mein Code:C kann Datei nicht mit einer Variablen öffnen
fp = fopen(readPathToFile, "r");
if (!fp){
printf("Failed to open text file\n");
exit(1);
}
else{
fscanf(fp,"%s",line);
printf("File read: %s",line);
}
Wenn ich es so schreiben, es zeigt mir den Inhalt der Datei:
fp = fopen("home/user/Desktop/test.txt", "r");
if (!fp){
printf("Failed to open text file\n");
exit(1);
}
else{
fscanf(fp,"%s",line);
printf("File read: %s",line);
}
Das Kind Prozess die Datei öffnet. Hier ist mein vollständiger Code
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#define READ 0
#define WRITE 1
int main()
{
pid_t pid;
int mypipefd[2];
id_t child_pid;
char line[100];
char *pathToFile[100];
FILE *fp;
char buff[255];
/* create the pipe */
if (pipe(mypipefd) == -1) {
fprintf(stderr,"Pipe failed");
return 1;
}
child_pid = fork() ;
if (child_pid > 0) {
printf("Introduceti locatia catre fisier:");
fgets(pathToFile, 100, stdin);
close(mypipefd[READ]);
write(mypipefd[WRITE], &pathToFile, sizeof(pathToFile));
close(mypipefd[WRITE]);
printf("parent: write value : %s",pathToFile);
}
else if (child_pid < 0) {
fprintf(stderr, "Fork failed");
return 1;
}
else{
char *readPathToFile[100];
close(mypipefd[WRITE]);
read(mypipefd[READ], &readPathToFile, sizeof(readPathToFile));
close(mypipefd[READ]);
printf("child: read value : %s",readPathToFile);
fp = fopen(readPathToFile, "r");
if (!fp)
{
printf("Failed to open text file\n");
exit(1);
}
else{
fscanf(fp,"%s",line);
printf("File read: %s",line);
}
}
return 0;
}
Zeigen Sie uns, wie Sie 'readPathToFile' deklarieren und zuweisen. –
Sie müssen in readPathToFile etwas falsch übergeben. – 4pie0
Wild assessed rate: 'readPathToFile' enthält am Ende einen Zeilenumbruch. – Jens