Строка делится на две при выводе - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Программа очень странно работает. Вывод одного слова как бы разрывается, сначала печатает "Обед", а на другой строке "ов". Хотя программа должна вывести "Обедов: 4". Из-за чего так происходит? dinner_info.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
 
int main(int argc, char *argv[])
{
    printf("Обедов: %s\n", argv[1]);
    printf("Сок: %s\n", getenv("JUICE"));
    
    system("pause");
    return 0;
}
main.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
 
int main(int argc, char *argv[])
{
    char *myEnv[] = {"JUICE=персик", NULL};
    execle("dinner_info.exe", "dinner_info.exe", "4", NULL, myEnv);
 
    system("pause");
    return 0;
}
Это то, что печатает программа main.exe. Слово "обедов: 4" разорвалось на две части.
C:\Program Files\CodeBlocks\Projects\C\Start>main.exe Обед C:\Program Files\CodeBlocks\Projects\C\Start>pause Для продолжения нажмите любую клавишу . . . ов: 4 Сок: персик
Даже иногда программа по-разному разрывает это слово. А иногда и нормально выводит. Что это вообще такое??

Решение задачи: «Строка делится на две при выводе»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
 
int main(void) {
    switch ( fork() ) {
        case -1:
            perror("fork");
            return 1;
        case 0: {
            char * argv[] = { "./dinner_info", "13", NULL };
            char * envp[] = { "ALCO=SAMOGON", NULL };
            if ( execve("./dinner_info", argv, envp) < 0 ) {
                perror("execve");
                return -1;
            }
            break;
        }
        default: {
            int ret;
            wait(&ret);
            printf("Press enter when done...");
            getchar();
        }
    }
    
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы