如何将char数组传递给fopen_s

问题描述 投票:1回答:1
#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"

我怎么做使程序用户可以把..

c fopen
1个回答
1
投票

如果我理解你的问题。

fgets(name,20,stdin); 

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

你的fopen_s将失败,因为fgetsname添加了换行符。

因此,您需要修剪name中的换行符。

例:

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

fopen_s(&des,name,"wb");
© www.soinside.com 2019 - 2024. All rights reserved.