0

ユーザーが入力した名前と id を連結したテキスト ファイルを作成したいのですが、ファイルは作成されていますが、実行するたびに拡張子の最後に 1 が追加されます。

#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
4

1 に答える 1

3

あなたのコードで

 char ex[4]=".txt";

文字列として使用しようとすると問題が発生しますex。null ターミネータがないため、割り当てられたメモリを超えてアクセスが行われ、未定義の動作が発生します。これをに変更

 char ex[ ]=".txt";

これは、文字列リテラルの引用符で区切られた初期化子の値によって初期化された文字列 (null ターミネータを含む) を保持するために必要な配列のサイズを自動的に決定します。

于 2020-11-05T13:00:52.420 に答える