Строка делится на две при выводе - C (СИ)
Формулировка задачи:
Программа очень странно работает. Вывод одного слова как бы разрывается, сначала печатает "Обед", а на другой
строке "ов". Хотя программа должна вывести "Обедов: 4". Из-за чего так происходит?
dinner_info.c
main.c
Это то, что печатает программа main.exe. Слово "обедов: 4" разорвалось на две части.
#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; }
#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; }
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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д