创建一个字符串数组并打印它

标签 c arrays c-strings

设置以下乐器的数组: 大提琴 吉他 fiddle 低音提琴 循环并删除元音。 我的尝试:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *aszMusicalInstruments[4];
    aszMusicalInstruments[0] = malloc(6 * sizeof(char));
    aszMusicalInstruments[0] = "CELLO";
    aszMusicalInstruments[1] = malloc(7 * sizeof(char));
    aszMusicalInstruments[1] = "GUITAR";
    aszMusicalInstruments[2] = malloc(12 * sizeof(char));
    aszMusicalInstruments[2] = "DOUBLE BASS";
    aszMusicalInstruments[3] = malloc(7 * sizeof(char));
    aszMusicalInstruments[3] = "VIOlIN";
    int iii;
    for (iii = 0; iii < 4; iii++)
    {
        int jjj = 0;
        while (aszMusicalInstruments[iii][jjj] != '\0')
        {
            if (aszMusicalInstruments[iii][jjj] == 'A' || aszMusicalInstruments[iii][jjj] == 'E' || aszMusicalInstruments[iii][jjj] == 'I' || aszMusicalInstruments[iii][jjj] == 'O' || aszMusicalInstruments[iii][jjj] == 'U')
            {
                aszMusicalInstruments[iii][jjj] = '_';
            }
            putchar(aszMusicalInstruments[iii][jjj]);
            jjj++;
        }
    }
    return 0;
}

但程序在打印 C 后停止工作。

最佳答案

没有必要为此做动态分配,它只会让问题变得更复杂。

只需使用一个数组:

char aszMusicalInstruments[][20] = {
  "CELLO",
  "GUITAR",
  "DOUBLE BASS",
  "VIOLIN"
};

这是一个二维字符数组,而不是一维字符指针数组 (char *aszMusicalInstruments[] = { "CELLO", ...),因此您可以修改字符自由地。

关于创建一个字符串数组并打印它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819874/

相关文章:

c++ - 将 strcpy() 与指向 cstring 的指针一起使用时出现段错误

c++ - Qt/C++ - 生成的条码不可读

c# - 查找一个字节数组是否包含另一个字节数组的最快方法是什么?

javascript - JavaScript/TypeScript 中带有字符串的连续分配数组

c++ - 如何删除一个空的对象数组?

c - 从字符串中获取整数

c - 为什么 strcpy 以相反的顺序接受它的参数

c - 2 种排序方法的意外结果 C

c - C 编程语言教科书 Joy of C 中的 "grading"练习问题

python - 在 Python CFFI 中声明包含 time_t 字段的结构