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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/types.h>
  5. #include <sys/wait.h>
  6.  
  7. int main(void) {
  8.     switch ( fork() ) {
  9.         case -1:
  10.             perror("fork");
  11.             return 1;
  12.         case 0: {
  13.             char * argv[] = { "./dinner_info", "13", NULL };
  14.             char * envp[] = { "ALCO=SAMOGON", NULL };
  15.             if ( execve("./dinner_info", argv, envp) < 0 ) {
  16.                 perror("execve");
  17.                 return -1;
  18.             }
  19.             break;
  20.         }
  21.         default: {
  22.             int ret;
  23.             wait(&ret);
  24.             printf("Press enter when done...");
  25.             getchar();
  26.         }
  27.     }
  28.    
  29.     return 0;
  30. }

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


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

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

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы