如何将char数组传递给fopen_s

时间:2018-12-10 19:59:23

标签: c fopen

#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");。 但是我使用了char数组而不是"~.jpg"

我如何使程序用户可以放置..

1 个答案:

答案 0 :(得分:1)

如果我了解您的问题。

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");