设置以下乐器的数组: CELLO GUITAR VIOLIN DOUBLE BASS 循环并删除元音。 我尝试:创建一个字符串数组并打印它
#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.
定义“停止工作”?看看你的代码,我想你有一个只读只读数据错误。您将'malloc(...)'存储在'Instruments [0]'中,并且在您使用strcpy(aszMusicalInstruments [0],“CELLO”)覆盖只读字符串'“CELLO”'' – Eregrith
的地址后,而不是分配操作。 – GingerJack
与您的问题无关,但标识符为'iii'和'jjj'使您的程序无法读取。 –