到目前为止,这是我的代码。它为每个字母打印出零。我有一个循环,为每个字母创建不同的fork子进程。然后我从循环到文件末尾的文件中取出字符,然后检查它是否是与ascii中的字母匹配的大小写。我真的被困住了,不知道从哪里开始。
int main(int argc, char **argv){
char characters[26] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
int counter[26] = { 0 };
int n = 26;
char c;
if (argc < 2)
return 1;
FILE *file = fopen(argv[1], "r");
pid_t pids[26];
for (int i = 0; i < n; i++){
if ((pids[i] = fork()) < 0) {
printf("Error");
exit(1);
} else if (pids[i] == 0) {
c = fgetc(file);
if (c == EOF) break;
if (c == (i + 65) || c == (i + 97))
counter[i]++;
exit(0);
} else {
wait(NULL);
}
}
for (int i = 0; i < n; ++i){
printf("%c: %i\n", characters[i], cou nter[i]);
}
fclose(file);
return 0;
}