Как передать массив символов в fopen_s - PullRequest
0 голосов
/ 10 декабря 2018
#include <stdio.h>

int main(void)

{
    int i;
    char name[20];
    FILE * src;
    FILE * des;
    fgets(name,20,stdin); 
    fopen_s(&src,"배경사진.jpg", "rb");
    fopen_s(&des,name,"wb");
    char buf[20];
    int readcnt;

    if (src == NULL || des == NULL) {
        puts("파일 오픈 실패!");
        return -1;
    }
    while (1)
    {
        readcnt = fread((void*)buf, 1, sizeof(buf), src);

        if (readcnt < sizeof(buf))
        {
            if (feof(src) != 0)
            {
                fwrite((void*)buf, 1, readcnt, des);


                puts("파일복사 완료");
            }
            else
                puts("파일복사 실패");

            break;
        }

Я хочу получить (имя нового файла для копирования) в cmd.обычно используется fopen_s(&des,"~.jpg", "wb");.но я использовал массив символов вместо "~.jpg".

как мне сделать так, чтобы пользователь программы мог поставить ..

1 Ответ

0 голосов
/ 10 декабря 2018

Если я понял вашу проблему.

fgets(name,20,stdin); 

fopen_s(&des,name,"wb");

Ваш fopen_s не удастся, так как fgets добавляет символ перевода строки к name.

Следовательно, вам нужно обрезатьсимвол перевода строки из name.

Пример:

size_t len = strlen(name);
if (len > 0 && name[len - 1] == '\n')
    name[len - 1] = '\0';

fopen_s(&des,name,"wb");
...