my ascii art program is showing the wrong chars

both architectures here http://www.sendspace.com/file/o3w85n

one source code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//-------------------------------------------------------------------------------
// Untitled1.cpp
// An ASCII art program.
//-------------------------------------------------------------------------------
#include <iostream>
#include <windows.h>
struct staxx {
	static const int cMAX = 60;
	char s[cMAX];
	int TOPs;
};
int main (void) {
	staxx stxx;
	for (int l = 0; l < stxx.cMAX; l++) {
		++stxx.TOPs;
		stxx.s[l] = 'z';
		std::cout << stxx.s << std::endl;
	}
	for (int l = stxx.cMAX - 1; l > -1; l--) {
		--stxx.TOPs;
		stxx.s[l] = ' ';
		std::cout << stxx.s << std::endl;
	}
	for (int l = stxx.cMAX - 1; l > -1; l--) {
		--stxx.TOPs;
		if (l % 2 == 0)
			stxx.s[l] = '!';
		else
		stxx.s[l] = 'z';
		std::cout << stxx.s << std::endl;
	}
	for (int l = 0; l < stxx.cMAX; l++) {
		++stxx.TOPs;
		if (l % 2 == 0)
			stxx.s[l] = '0';
		if (l % 2 == 1 || l % 2 == 3)
			stxx.s[l] = 'Z';
		if (l % 2 == 2 || l % 2 == 7)
			stxx.s[l] = '$';
		if (l % 2 == 4 || l % 2 == 5 || l % 2 == 6)
			stxx.s[l] = 'z';
		if (l % 2 == 8 || l % 2 == 9)
			stxx.s[l] = '!';
		std::cout << stxx.s << std::endl;
	}
		for (int l = -1; l < stxx.cMAX - 1; l++) {
		++stxx.TOPs;
		stxx.s[l] = ' ';
		std::cout << stxx.s << std::endl;
	}
		for (int l = stxx.cMAX - 1; l > -1; l--) {
		--stxx.TOPs;
		if (l % 2 == 0)
		stxx.s[l] = '?';
		else
		stxx.s[l] = '$';
		std::cout << stxx.s << std::endl;
	}
	MessageBox(0 ,"Why so serious?","t",MB_OK);
	return 0;
}


Any help will be appreciated.
stxxx.s[cMax-1] must be '\0' always to mark end of char array.

Might help to initialise stxxx.s before use.
Here's what I wrote after line 13:

stxx.s[stxx.cMAX] = { 0 };

Here's lines 60 to 87 of the output:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz<
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz ;
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz  :
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz   9
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz    8
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz     7
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz      6
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz       5
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz        4
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz         3
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz          2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz           1
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz            0
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz             /
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz              .
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz               -
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                ,
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                 +
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                  *
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                   )
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                    (
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                     '
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                      &
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                       %
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                        $
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                         #
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                          "
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz                           ! 


There's seems to be a 61st character in many lines. Is that what you're trying to tell me?

Hm... I'll try rewriting the

for (int l = stxx.cMAX - 1; l > -1; l--)'s

into

for (int l = stxx.cMAX; l > 0; l--)
I solved it! The struct I defined was needless and caused all the problems.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//-------------------------------------------------------------------------------
// Untitled1.cpp
// An ASCII art program.
// (C) 2012 speci4lzero
//-------------------------------------------------------------------------------
#include <iostream>
#include <windows.h>
const int cMAX = 60;
char _art[cMAX];

int main (void) {
	for (int l = 0; l < 60; l++) {
		_art[l] = 'z';
		std::cout << _art << std::endl;
	}
	for (int l = 60; l > 0; l--) {
		_art[l] = ' ';
		std::cout << _art << std::endl;
	}
	for (int l = 60; l > 0; l--) {
		if (l % 2 == 0)
			_art[l] = '!';
		else
		_art[l] = 'z';
		std::cout << _art << std::endl;
	}
	for (int l = 0; l < 60; l++) {
		if (l % 2 == 0)
			_art[l] = '0';
		if (l % 2 == 1 || l % 2 == 3)
			_art[l] = 'Z';
		if (l % 2 == 2 || l % 2 == 7)
			_art[l] = '$';
		if (l % 2 == 4 || l % 2 == 5 || l % 2 == 6)
			_art[l] = 'z';
		if (l % 2 == 8 || l % 2 == 9)
			_art[l] = '!';
		std::cout << _art << std::endl;
	}
		for (int l = 0; l < 60; l++) {
		_art[l] = ' ';
		std::cout << _art << std::endl;
	}
		for (int l = 60; l > 0; l--) {
		if (l % 2 == 0)
		_art[l] = '?';
		else
		_art[l] = '$';
		std::cout << _art << std::endl;
	}
	MessageBox(0 ,"Drawing complete!","alien",MB_OK);
	return 0;
}
Topic archived. No new replies allowed.