UAC
833 постов
Карма: 27
#1 08 февраля 2008 в 10:15
Всем привет! <br />Решил написать программу которая: <br />Отрезает(копирует в новый, не модифицирует оригинал) от видеофайла 6МБ кусок<br />Для чего? Ну, чтобы экономить время и болванки, когда скачаю несколько новых <br />фильмов и хочу проверить будут ли они работать на моем домашнем DVD. <br />То-есть, отрезанные кусочки закатать на болванку и уже их проверить на читаемость. <br /><br />Большое спасибо Кригсу&nbsp; - он помог мне довести дело до создания исполняемого <br />модуля, исправив мои грубые ошибки&nbsp; :D <br /><br />А дальше тоже пошло негладко - вместо 6Мега программа почему-то создает куски <br />размером 4.29КБайт которые не открываются ни одним медиаплеером. <br /><br />
#include &lt;stdio.h&gt;<br />int main(){<br /> #define defaultPath &quot;d:/Cut_Vid_temp/tempVid.data&quot;<br /><br /> char cPath[127], fileByte; // one byte out of opened file <br /> double i; <br /><br /> FILE *f, *g; <br /><br /> printf(&quot;\nEnter full path to file \n including name and extension: \n&gt; &quot;);<br /> gets(cPath); <br /><br /> f=fopen(cPath,&quot;rb&quot;); // binary, read-only<br /> g=fopen(defaultPath,&quot;wb&quot;); // binary, write only <br /><br /> if(f==NULL||g==NULL)<br /> printf(&quot;\nError while opening file!\n&quot;); <br /> else // 1048576 bytes is 1MByte<br /> for(i=0; (i&lt;1048576*6) &amp;&amp; (fileByte=getc(f))!=EOF; i++)<br /> putc(fileByte,g);<br /> fclose(f);<br /> fclose(g); <br /><br /> printf(&quot;\nResult is in the file %s\n Press any key to exit\n&quot;, defaultPath);<br /> getch(); <br /><br /> return 0;<br />}
<br /><br />
UAC
833 постов
Карма: 27
#2 09 февраля 2008 в 07:42
Всё народ, проблема разрешилась. <br />Надо было переменную fileByte объявить как тип int <br />(существенно для хранения символа конца файла в данной переменной). <br /><br />Вводить путь к файлу надо целиком через обычный слэш <br />[center]/[/center]<br />или через двойной обратный<br />[center]\\[/center]<br /><br />Пользуйтесь, кому надо&nbsp; 8)<br /><br />P.S.<br />Чуть не забыл, копированные 6МБайтные куски будут сохраняться , как видно из кода, <br />&quot;по адресу&quot; d:/Cut_Vid_temp/tempVid.data<br />Не знаю, обязательно ли предварительно создавать директорию Cut_Vid_temp для <br />корректной работы, но я сам создал эту папку отдельно. <br /><br />P.P.S.<br />Не забудьте поменять расширение *.data на *.AVI<br />Мой домашний DVD например, просто не видит файлов с иными расширениями.