Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Изменение расширения файла

Всем здравствуйте!
Я пришёл к вам за помощью!)
Подскажите пожалуйста как можно изменить расширение файлов в папке. Точнее говоря, у файлов нет расширения, надо сделать чтобы было. Какие есть варианты? Есть ли в c++ что то похожее на changefileext из делфи? //если есть похожая тема- дайте ссылку.
Заранее спасибо за помощь!
Ответ:
Сообщение от arhimed2012
Только вот проблема в том, что в папке не один файл, а целая куча
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <Windows.h>
#include <vector>
#include <string>
 
using namespace std;
 
int main() {
    
    WCHAR dir[]=L"C:\\Users\\User\\Desktop\\qw\\*";
    wstring path = L"C:\\Users\\User\\Desktop\\qw";
    WIN32_FIND_DATA file; // структура файла
    vector<wstring> buf; // сюда складываем каждое название
    HANDLE hFind = INVALID_HANDLE_VALUE; 
    int counter = 0;
    hFind = FindFirstFile(dir, &file); 
    /* Если нужны проверки, - самостоятельно */
    do {
        if (!(file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
            buf.push_back(file.cFileName); 
            counter++;
        }
    } while (FindNextFile(hFind, &file) != 0);
 
    do {
        counter--;
        _wrename((path + buf[counter]).c_str(), (path + buf[counter] + L".txt").c_str());
    } while (counter != 0);
}
Вопрос: Заменить расширение файла, зная его путь

С клавиатуры ввести стринг , который задает полное имя файла (с указанием пути к этому файлу ) . Заменить расширение файла на * .new (если файл не имел расширения , то добавить его ) . Напечатать новое имя , указать большими буквами , а именно имя файла - строчными.
Ответ:
Сообщение от Evg
тут нет вопроса о переименовании файла.
Разве? Насколько я понял,
Сообщение от Yaroslav Zayats
Заменить расширение файла на * .new (если файл не имел расширения , то добавить его ) .
это как-раз
C
1
rename("myfile.old", "myfile.new");
только ещё вывести одно название большими буковками, другое маленькими (/ в помощь) и неплохо бы убедиться, что изначальный файл вообще есть (ну или хотябы результат работы rename() и errno проверить).
Или в том смысле, что надо из myfile.old как-то myfile.new получить (при учёте, что ещё и путь может присутствовать)? В X/Open есть / . В виндовской API тоже пруд пруди всяких функций для работы с путями/именами. В крайнем случае можно и руками сделать ().
Но судя по тому, что от топикстартера 0 попыток, думаю, нужно не умничать, а взять и за него сделать (желательно побыстрее и с комментариями к каждой строчке).
Вопрос: Как получить название расширения файла

У меня есть код который считывает путь к файлу , но еще надо получить название расширения файла при его открытии и записать в строку?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 public void открытьФайлToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            LoadImage(true);
            //LoadImage(false);
            // выход, если была нажата кнопка Отмена и прочие (кроме ОК)
            if (openFileDialog1.ShowDialog() != DialogResult.OK) return;
            {
                // всё. имя файла теперь хранится в openFileDialog1.FileName
                MessageBox.Show("Выбран файл: " + openFileDialog1.FileName);
            }
 
           FileName.PathFile = openFileDialog1.FileName;// путь к файлу
 
        }
Ответ:
Сообщение от SVD102
получить название расширения файла
Для получения различных частей полного пути файла используйте класс :
C#
1
var ext = Path.GetExtension(openFileDialog1.FileName);
Вопрос: Расширение файла

Подскажите пожалуйста где тут ошибка
PHP
1
$ras=mysql_fetch_array(mysql_query("SELECT `ras` FROM `diary_images` WHERE `id`='".mysql_real_escape_string($img)."' LIMIT 1"));
функция должна из базы взять расширение файла, возвращает ответ "array"
Ответ:
Сообщение от maksimus-007
функция должна из базы взять расширение файла, возвращает ответ "array"
на сайте php забанили?
Вопрос: Дан текстовый файл. Найти номер самой короткой строки

Дан текстовый файл. Найти номер самой короткой строки. (Язык C)
Ответ: как вариант
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
//Дан текстовый файл. Найти номер самой короткой строки.
int main()
{
    int min = 80, strnum, ns = 0;
    char s[80];
    FILE *fin;
    fin = fopen("input.txt", "r");
    while(fgets(s, 80, fin)){
        ns++;
        if(strlen(s) < min){
            min = strlen(s);
            strnum = ns;
        }
    }
    printf("Line %d is shortest\n", strnum);
    fclose(fin);
    return 0;
}
Вопрос: Не могу определить расширения файлов

Забыл расширения у 3 файлов, которые по идее содержат программу вычислительного метода "Хорд") Никак не могу подобрать подходящие расширения файлов. Пользовался даже Online TrID File Identifier, но он определяет только 2 из 3 файлов, и это ничего не даёт(( Кому не сложно, помогите пожалуйста(( Чтобы загрузить сюда поставил расширение .txt, изначально разумеется его не было(
Ответ:
Сообщение от _lTaNaToSl_
Как всё эту запускать?
Используйте make
Сообщение от _lTaNaToSl_
И содержат ли эти файлы вообще "Метод Хорд"?
Я то откуда знаю?
Это Ваши файлы
Вопрос: Сохранение файла макросом

Здравствуйте!

Макрос создает файл, вставляет таблицы, формирует сводные таблицы и диаграммы. Потом сохраняет и закрывает файл.

Если открыть сохраненный файл макросом, то выдает сообщение "Ошибка в части содержимого в книге. Выполнить попытку восстановления? Если Вы доверяете источнику, из которого получена книга, нажмите кнопку "Да"." Если нажать на "Да", то вместо таблиц как ListObject и вместо сводных таблиц отображаются простые таблицы без форматирования на всех вкладках, отсутствуют диаграммы.

Если приостановить макрос в точке сохранения и сохранить вручную, то файл открывается нормально.

Почему так происходит? Как правильно сохранять?

К сообщению приложен файл. Размер - 3Kb
Ответ:
ferzmikk
Вообще у выпадающего списка есть ограничения?
да. Длина строки формулы, формируемой макросом не должна превышать 255 символов(включая запятые).
Вопрос: Изменение содержимого файла без вызова write

С новым годом всех и всем привет.

Вопрос следующий:
Есть ли возможность записывать изменения в файл находу, не вызывая write?
Код C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        fd = open(list->files[i], O_RDWR);
        if (fd < 0)
        {
            perror(strerror(errno));
        }
        if (fstat(fd, &stats) == -1)
        {
            perror(strerror(errno));
        }
        char *fileptr = (char*) malloc(sizeof(char[stats.st_size]));
        if (read(fd, fileptr, stats.st_size) == -1 )
        {
            perror(strerror(errno));
        }
//... 
МЕНЯЕМ СОДЕРЖИМОЕ fileptr
//...
       [B] if (write(fd, fileptr, stats.st_size) == -1)[/B]
        {
            perror(strerror(errno));
        }
        }
        if (close(fd) == -1)
        {
            perror(strerror(errno));
        }
Если даже я меняю fileptr, значения в файле не меняются т.к. реально записи на диск не происходит.
Есть ли какая-либо возможность записывать изменения без вызова write, или он обязателен в таком случае?
Ответ: Да это уже само собой исправил, всё работает и на первый взгляд быстрее чем с вызовом write, мне очень понравилось.
Для моей программы, которая будет работать в несколько потоков это оказалось важно.

Всем спасибо!
Вопрос: Напишите функцию,которая заменяет расширение файла на заданное новое расширение

Напишите функцию,которая заменяет расширение файла на заданное новое расширение
Ответ:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function rash(name,ras:string):string;
begin
result:=copy(name,1,pos('.',name))+ras;
end;
 
var s,s1:string;
begin
writeln('Введите имя файла с расширением');
readln(s);
writeln('Введите новое расширение');
readln(s1);
s:=rash(s,s1);
write(s)
end.
Вопрос: В текстовом файле нужно найти самое длинное предложение

в текстовом файле нужно найти самое длинное предложение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "time.h"
void time_step (FILE*f)
{
    time_t t;
    t=time(NULL);
    fprintf(f, " %s \n",ctime(&t));
}
main (int argc, char *argv[])
{
    char buffer[20], ch, word[2000], N[2];
    FILE *fx, *fy, *flog;
    int SW, I, Pro;
    printf("Kratkoe izlozhenie zadachi:\n");
    printf("V tekstovom fayle nayti samoe dlinnoe predlozhenie\n");
    sprintf(buffer,"%s.log",argv[0]);
    if((flog=fopen(buffer,"a"))==NULL)
    {
        puts("Oshibka otkryitiya zhurnala");
        puts("press Enter");
        getchar();
        exit(0);
    }
    time_step(flog);
    fprintf(flog, "programma %s pristupila k rabote\n", argv[0]);
    if (argc<4)
    {
        time_step(flog);
        fprintf(flog, "Oshibka,nedostatochno argumentov komandnoy stroki,rabota zavershena\n", argv[0]);
        fclose(flog);
        printf("Oshibka,ispolzuyte %s <imya fayla> <imya fayla> \n",argv[0]);
        puts("Press Enter");
        getchar();
        exit(0);
    }
    if((fx=fopen(argv[1],"r"))==NULL)
    {
        time_step(flog);
        fprintf(flog, " Oshibka nevozmozhno otkryit vhodnoy fayl %s ", argv[1]);
        printf(" %s\n", argv[1]);
        printf("nevozmozhno otkryit fayl\n");
        puts("press Enter");
        getchar();
        fclose(flog);
        exit(0);
    }
    time_step(flog);
    fprintf(flog, "fayl %s uspeshno otkryit\n",argv[1]);
    if((fy=fopen(argv[2],"a"))==NULL)
    {
            time_step(flog);
            fprintf(flog,"Oshibka nevozmozhno otkryit vhodnoy fayl %s ",argv[2]);
            printf("nevozmozhno otkryit vhodnoy fayl\n");
            getchar();
            fclose(flog);
            exit(0);
    }
    time_step(flog);
    fprintf(flog,"fayl %s uspeshno otkryit\n",argv[2]); 
    sprintf(N,"%s",argv[3]);   
   
    SW=0;
    while(1)
    {//начало поиска
       
 
 
 
        {
            SW++;
        }
    }
    fprintf(fy,"samoe dlinnoe predlozenie %s ",  );
    fprintf(fy,"\n");
    printf("\n");
    fclose(fx);
    fclose(fy);
    time_step(flog);
    fprintf(flog,"operatsiya vyipolnena uspeshno\n%s i %s uspeshno zakryityi, programma zavershila rabotu\n",argv[1],argv[2]);
    printf("operatsiya vyipolnena \n");
    puts("press Enter");
    getchar();
    fclose(flog);
    exit(0);
}
Ответ:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <stdio.h>
#include <string.h>
#include <malloc.h>
 
typedef struct {
    char*  s;
    size_t p;
    size_t n;
} buf_t;
inline void buf_init(buf_t* b);
inline int  buf_empty(buf_t* b);
inline char buf_at(const buf_t* b, size_t i);
inline const char* buf_str(buf_t* b);
inline size_t buf_length(const buf_t* b);
inline void   buf_reset(buf_t* b);
int  buf_add(buf_t* b, char c);
int  buf_copy(buf_t* d, const buf_t* s);
void buf_clear(buf_t* b);
int  find_maxprop(FILE* _in, buf_t* m);
 
int main(void){
    buf_t m;
/*
    работа с файлом
    FILE* fp = fopen("file.txt", "rt");
    buf_init(&m);
    if(find_maxprop(fp, &m))
        printf("find max: %s\n", buf_str(&m));
    fclose(fp);
*/
    buf_init(&m);
    if(find_maxprop(stdin, &m))
        printf("find max: %s\n", buf_str(&m));
    buf_clear(&m);
    return 0;
}
 
//найти самое длинное предложение во входном потоке
int find_maxprop(FILE* _in, buf_t* m){
    int   c;
    buf_t b;
 
    if((_in == NULL) || feof(_in))
        return 0;
 
    buf_init(&b);
    buf_reset(m);
    do {
        c = fgetc(_in);
        if(c == '.' || c == '!' || c == '?' || c == EOF){
            if(buf_length(&b) > buf_length(m)){
                if(! buf_copy(m, &b))
                    goto err;
            }
            buf_reset(&b);
        } else {
            if(! buf_add(&b, (char)c))
                goto err;
        }
    } while((c != EOF) && !ferror(_in));
 
    buf_clear(&b);
    return 1;
err:
    buf_clear(&b);
    buf_clear(m);
    return 0;
}
//--------------
 
int buf_add(buf_t* b, char c){
    char*  t;
    size_t m;
    if(b->s == NULL){
        b->s = (char*)malloc(b->n * sizeof(char));
        if(b->s == NULL)
            return 0;
    } else if((b->p + 1) >= b->n){
        m = b->p + 1 + (b->n >> 1);
        t = (char*)realloc(b->s, m * sizeof(char));
        if(t == NULL)
            return 0;
        b->s = t;
        b->n = m;
    }
    b->s[b->p++] = c;
    return 1;
}
 
int buf_copy(buf_t* d, const buf_t* s){
    size_t i;
    int    r = 1;
    buf_reset(d);
    for(i = 0; i < buf_length(s); ++i){
        if(! buf_add(d, buf_at(s, i))){
            r = 0;
            break;
        }
    }
    return r;
}
 
void buf_clear(buf_t* b){
    if(b->s != NULL)
        free(b->s);
    b->s = NULL;
    b->p = 0;
    b->n = 32;
}
 
inline void buf_init(buf_t* b){
    b->s = NULL;
    b->p = 0;
    b->n = 32;
}
 
inline const char* buf_str(buf_t* b){ 
    b->s[b->p] = '\0';
    return &b->s[0];
}
 
inline char   buf_at(const buf_t* b, size_t i) { return b->s[i]; }
inline int    buf_empty(buf_t* b) { return (b->s == NULL); }
inline size_t buf_length(const buf_t* b) { return b->p; }
inline void   buf_reset(buf_t* b) { b->p = 0; }