所以大家好,我正在开发一个程序,我需要输出一个2D int
数组(我把它变成了int
- 数组,因为我在其他一些数据库中处理这些值点)。在我的第一次尝试中,我尝试为int
值打印正确的char(包括ASCII):
void printField(){
int i,j;
system("CLS");
for(i=0; i<52; i++) {
for(j=0; j<142; j++) {
if(field[i][j]==0){
printf(" ");
}
if(field[i][j]==9){
printf("%c",219);
}
if(field[i][j]==2){
printf("%c",219);
}
if(field[i][j]==1){
printf(" ");
}
if(field[i][j]==6){
printf(" ");
}
if(field[i][j]==7){
printf("%c",207);
}
printf("\n");
}
}
问题是,屏幕闪烁,因为我必须非常快地打印该字段并且它会在字符后打印字符。所以我开始研究(here和here可能有所帮助),并试图通过一次打印出来来解决这个问题(使用strcat()
):
void printField(){
int i,j;
char toPrint[10000];
system("CLS");
for(i=0; i<52; i++) {
for(j=0; j<142; j++) {
if(field[i][j]==0){
strcat(toPrint," ");
}
if(field[i][j]==9){
char temp[2];
temp[0]=char(219);
strcat(toPrint,temp);
}
if(field[i][j]==2){
char temp[2];
temp[0]=char(219);
strcat(toPrint,temp);
}
if(field[i][j]==1){
strcat(toPrint," ");
}
if(field[i][j]==6){
strcat(toPrint," ");
}
if(field[i][j]==7){
char temp[2];
temp[0]=char(207);
strcat(toPrint,temp);
}
}
strcat(toPrint,"\n");
}
printf("%s\n", toPrint);
}
使用DEV-C ++我不会得到任何错误,但输出完全不是应该的。有什么想法吗?
答案 0 :(得分:2)
试试这个:
void printField()
{
int i,j;
int n = 0;
char toPrint[52*(142+1)+1];
system("CLS");
for (i=0; i<52; i++)
{
for (j=0; j<142; j++)
{
switch (field[i][j])
{
case 0: toPrint[n++] = ' '; break;
case 9: toPrint[n++] = 219; break;
case 2: toPrint[n++] = 219; break;
case 1: toPrint[n++] = ' '; break;
case 6: toPrint[n++] = ' '; break;
case 7: toPrint[n++] = 207; break;
}
}
toPrint[n++] = '\n';
}
toPrint[n] = '\0';
printf("%s\n",toPrint);
}
答案 1 :(得分:1)
抱歉,您的代码中有许多错误的内容,因此我必须将其重写为:
void printField(){
int i,j;
char toPrint[10000];
char* current = toPrint; // pointer to beginning of char array
system("CLS");
for(i=0; i<52; i++) {
for(j=0; j<142; j++) {
if(field[i][j]==0){
*current++ = ' ';
}
if(field[i][j]==9){
*current++ = '\xDB';
}
if(field[i][j]==2){
*current++ = '\xDB';
}
if(field[i][j]==1){
*current++ = ' ';
}
if(field[i][j]==6){
*current++ = ' ';
}
if(field[i][j]==7){
*current++ = '\xCF';
}
}
*current++ = '\n';
}
*current = '\0';
puts(toPrint);
}
修改:修正了错误的字符