我试图从a到x迭代并创建文件a.dat,b.dat,…,x.dat

int main()
{
    char letter = 'A';

    FILE *fp;
    while (letter < 0x59) {
        printf("%c", letter);
        char *fname = "";
        fname[0] = letter;
        fname= strcat(fname, ".dat");
        const char * fnam = fname;
        fp = fopen(fnam, "ab+");
        fclose( fp );

        letter++;
    }
    return 0;
}

它在字母上迭代很好,但是这一行
fname[0] = letter;

由于“分段错误”导致程序崩溃。在调试器中,它说“无法访问地址..的内存”
我想用字母和“.dat”创建一个字符串,为此我创建了一个空字符串,并通过给它的0元素指定字母的值,使它的第一个字符成为我想要的字母。但它不起作用,我不明白为什么。

最佳答案

只需对文件名使用char数组:

char filename[] = "_.dat";

for (char letter = 'A'; letter <= 'X'; ++letter) {
    filename[0] = letter;
    FILE* fp = fopen(filename, "ab+");
    // etc.
}

关于c++ - 从“a”迭代到“x”并为每个字母创建一个“.dat”文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26494628/

10-14 09:22