C - изменить исходный файл, чтобы создать потомок, используя execve для строк - PullRequest
0 голосов
/ 01 августа 2020

Как я могу изменить главное, чтобы родитель создавал отдельный дочерний элемент для каждой пары строк. Потомок получает строки в 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...