Как я могу изменить главное, чтобы родитель создавал отдельный дочерний элемент для каждой пары строк. Потомок получает строки в argv и возвращает значение в main, используя execve и код mystrdiff. c. УВЕДОМЛЕНИЕ : дочерний элемент только вычисляет, а родитель выполняет ввод / вывод от пользователя.
#include <stdio.h>
#include <string.h>
#include "mystrlib.h"
#define STRLEN (80)
int main(int argc, char *argv[])
{
char str1[STRLEN+1], str2[STRLEN+1];
while ((mygets(str1, STRLEN) != NULL) && (mygets(str2, STRLEN) != NULL))
{
printf("%d\n", mystrdiff(str1, str2));
}
return 0;
}
// «mystrlib. c» - необходимо использовать в основном дочерним элементом с execve
int mystrdiff(char *str1, char *str2)
{
int retval;
int len, len1, len2;
int i;
len1 = strlen(str1);
len2 = strlen(str2);
len = (len1 < len2) ? len1 : len2;
retval = abs(len1 - len2);
for (i = 0; i < len ; i++)
{
if (str1[i] != str2[i])
{
retval++;
}
}
return retval;
}
// Все функции, используемые внутри "mystrlib. c"
#ifndef _MYSTRLIB_H_
#define _MYSTRLIB_H_
char *mygets(char *, int);
int mystrdiff(char *, char *);
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mystrlib.h"
char *mygets(char *str, int len)
{
char *retval;
char *strterm;
retval = fgets(str, len, stdin);
strterm = strchr(str,'\n');
if (strterm != NULL)
{
*strterm = '\0';
} else {
str[len] = '\0';
}
return retval;
}