gpt4 book ai didi

无法读取写在 C 文件上的行

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:05 25 4
gpt4 key购买 nike

我一直在开发这个项目,其中每个进程在被 fork 后都会将其信息写入一个文件,供父级读取。我还为家长编写了一个小片段来阅读这个文件,但每次我运行这段代码时它都不起作用。相反,当我以下列格式手动写入文件时:

  • 567 |一个 |乙 | 20
  • 568 |否 |一个 | 2
  • 569 | Z |乙 | 12

我可以正常阅读,但是当我运行这段代码时:

  #include "header.h"


struct Individui {
pid_t pid;
char tipo[50];
char nome[50];
unsigned long genoma;
};


int main(int argc, char *argv[]) {

Individuo individuo;
srand(getpid());

int min = 2;
int max = atoi(argv[2]);
int diff = max - min;
int r;
r = rand() % (diff + 1) + min;

char randomletter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand() % 26];

individuo.pid = getpid();
strcpy( individuo.tipo, argv[0]);
strcpy( individuo.nome, &randomletter);
individuo.genoma = r;

FILE *f = fopen("dati.txt", "a");
if (f == NULL)
{
printf("Error opening file!\n");
exit(1);
}

fprintf(f, "%d | %s | %s | %lu\r", individuo.pid, individuo.nome, individuo.tipo, individuo.genoma);

fclose(f);

return 0;
}

然后用这段代码读取文件,它不起作用:

int main(){
char name[4], type[4];
int pids[4];
unsigned long genome[4];
int i = 0;

FILE * file = fopen("dati.txt", "r"); // "r" = read
while(fscanf(file, "%d | %c | %c | %ld\n", &pids[i], &name[i], &type[i], &genome[i]) != EOF){
i++;
}

printf ("%d %c %c %lu\n", pids[0], name[0], type[0], genome[0]);
printf ("%d %c %c %lu\n", pids[1], name[1], type[1], genome[1]);
printf ("%d %c %c %lu\n", pids[2], name[2], type[2], genome[2]);
}

据我了解,我写的流程代码行很长,读取文件的代码不支持。我是 C 的新手,所以我真的不知道我错在哪里,我希望有人能提供帮助。

最佳答案

错误修复作者:

char randomletter[2];
randomletter[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand() % 26];
randomletter[1] = '\0';

strcpy( individuo.nome, randomletter);

fprintf(f, "%d | %s | %s | %lu\n",
individuo.pid, individuo.nome, individuo.tipo, individuo.genoma);

错误修正读者:

void read() {
char name[4][50], type[4][50];
int pids[4];
unsigned long genome[4];

FILE * file = fopen("dati.txt", "r"); // "r" = read
for (int i = 0; i < 4; i++) {
if (fscanf(file, "%d | %s | %s | %lu", &pids[i], name[i], type[i], &genome[i]) != 4)
break;

printf ("%d %s %s %lu\n", pids[i], name[i], type[i], genome[i]);
}
}

关于无法读取写在 C 文件上的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47655880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com