该程序应该遍历文件,并且当字符与给定模式之一匹配时,为其数组单元分配0或1。然后显示来自太空和星星的隐藏消息。但是它会根据文件中的最后一个字符为数组中的所有单元分配0或1。
示例文件通过(30A.dat)循环播放: ZuVbJJgFyMuVaXsRkgPuHJmNgiNPFJmHDVRFmPcNLgDykaFugooidgyBhgNEsVdXCcsaYyaYQEGsNhpIxOJHyFjluiNvoFJLSTRVlEPPHGNowGeavuRnNySivmuQXXLgxDKRXPutaBOgNYiZvtPwoYHXEFcrVVOJwirHoOwmxDqFILoHfygqNcBfXLsDMXtNymytqEgCeoMoIosuctXbsmDUsmfBwzJqBMyTHjaunrlTWjzxMuBhvUGIxRAqcrFheCGUzlhLKeLHAcsvaZCaNyzuwiMgkVBbLzBHPUiXlXDXTIwjqTHvIeWFTXLdDYccceSQBfIXDagvZPesYQdjeeUVZVqdyxPcFwxaWJywgWXviFkyKoz
int tab_a[a][c];
int i = 0;
int j = 0;
while((znak = fgetc(plik2)) != EOF){
for(int i = 0; i < a; i++){
for(int j = 0; j < c; j++){
if((znak == 'a') ||
(znak == 'B') ||
(znak == 'c') ||
(znak == 'D') ||
(znak == 'e') ||
(znak == 'F') ||
(znak == 'g') ||
(znak == 'H') ||
(znak == 'i') ||
(znak == 'J') ||
(znak == 'k') ||
(znak == 'L') ||
(znak == 'm') ||
(znak == 'N') ||
(znak == 'o') ||
(znak == 'P') ||
(znak == 'q') ||
(znak == 'R') ||
(znak == 's') ||
(znak == 'T') ||
(znak == 'u') ||
(znak == 'V') ||
(znak == 'w') ||
(znak == 'X') ||
(znak == 'y') ||
(znak == 'Z'))
{
tab_a[i][j] = 0;
}
else if((znak == 'A') ||
(znak == 'b') ||
(znak == 'C') ||
(znak == 'd') ||
(znak == 'E') ||
(znak == 'f') ||
(znak == 'G') ||
(znak == 'h') ||
(znak == 'I') ||
(znak == 'j') ||
(znak == 'K') ||
(znak == 'l') ||
(znak == 'M') ||
(znak == 'n') ||
(znak == 'O') ||
(znak == 'p') ||
(znak == 'Q') ||
(znak == 'r') ||
(znak == 'S') ||
(znak == 't') ||
(znak == 'U') ||
(znak == 'v') ||
(znak == 'W') ||
(znak == 'x') ||
(znak == 'Y') ||
(znak == 'z'))
{
tab_a[i][j] = 1;
}
}
}
}
for(int i = 0; i < a; i++){
for(int j = 0; j < c; j++){
if(tab_a[i][j] == 1){
printf("*");
}
else{
printf(" ");
}
}
printf("\n");
}
fclose(plik);
答案 0 :(得分:0)
当然可以:
对于 每个 字符读取,遍历 所有 数组元素,并检查每次读取的字符是否为在a-zA-Z中。如果是这样,(这将始终为真),然后根据if语句将array元素设置为0或1。实际上,数组值将全部基于最后读取的字符。
现在,您真正想要的还不清楚,所以我无法提供完整的解决方案。
答案 1 :(得分:0)
类似的事情可能起作用。
创建一个有效字符数组。
从文件中读取一个字符到znak
中。
strchr
将检查znak
是否为有效字符之一。
如果是这样,请设置为零。如果没有,请设置一个。
递增j
。如果j
等于c
,请将j
重置为零并递增i
。
读另一个字符。
当i
等于a
时,数组已满。 Break
走出循环。
char valid[] = "aBcDeFgHiJkLmNoPqRsTuVwXyZ";
while ( (znak = fgetc(plik2)) != EOF) {
if ( strchr ( valid, znak)) {
tab_a[i][j] = 0;
}
else {
tab_a[i][j] = 1;
}
j++;
if ( j >= c) {
j = 0;
i++;
if ( i >= a) {
break;
}
}
}