微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在字符串末尾添加1?在这段代码中

如何解决为什么在字符串末尾添加1?在这段代码中

我想创建一个文本文件,其名称用户输入,且ID带有隐含的名称,正在创建该文件,但是每次我运行扩展名的最后一个添加了该文件

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(int argc,char const *argv[])
{
    char name[50];int id=1;
    printf("Enter your name:\n");
    scanf("%s",name);
    char ids[10];
    itoa(id,ids,10);
    strcat(name,ids);
    printf("%s\n",name );
    char ex[4]=".txt";
    printf("%s\n",ex );
    strcat(name,ex);
    printf("Filename :%s\n",name);
    return 0;
}

我得到的输出

Enter your name:
file
file1
.txt1    // i don't kNow why this 1 is getting added
Filename :file1.txt1

预期输出

Enter your name:
file
file1
.txt
Filename :file1.txt

解决方法

在您的代码中

 char ex[4]=".txt";

不会为空终止符留出空间,这会在您尝试将ex用作字符串时产生问题。由于没有空终止符,因此访问是通过分配的内存进行的,这将导致undefined behavior。更改为

 char ex[ ]=".txt";

它会自动确定保存字符串所需的数组大小(包括空终止符),并由字符串文字的用引号分隔的初始化值进行初始化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。