Строка делится на две при выводе - 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;
}