如何将char数组传递给fopen_s

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (48)
#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”。

我该如何让程序用户可以执行呢

提问于
用户回答回答于
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");

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券