Строка делится на две при выводе - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д