Web lists-archives.com

Re: [Mingw-users] is this mingw error?





On 2017-02-27 05:24, Chan Oak wrote:
> here source code
> 
> #include <stdio.h>
> #define MAX 100
> char aaa[MAX];
> int addstr(char a)
> {
>     static int cur = 0;
>     if (cur > MAX)
>         return 0;
>     else
>         aaa[cur] = a;
>    
>     return 1;
> }
> int main()
> {
>     char a;
>     int i;
>    
>     while ((a = getchar()) != EOF)
>     {
>         addstr(a);
>     }
>     printf("%c", aaa[0]);
>     printf("hello\n");
> }
> 
> here is output
> 
> a
> ^Z
> hello
> the global array aaa[0] is modified yet it does not print aaa[0].
> if I put printf inside function addstr to print aaa[0], it does print
> 
> is this compiler bug?

I suspect that aaa[0] contains a newline after the while loop and that
this is why you do not see what is actually printed before hello.

Try this instead.

#include <stdio.h>

char aaa[100];

int addstr(char a)
{
	static int cur;

	if (cur >= sizeof(aaa) / sizeof(aaa[0]))
		return 0;

	aaa[cur++] = a;
	return 1;
}

int main(void)
{
	char a;
   
	while ((a = getchar()) != EOF)
	{
		addstr(a);
	}

	printf("%s", aaa);
	printf("hello\n");

	return 0;
}

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
MinGW-users mailing list
MinGW-users@xxxxxxxxxxxxxxxxxxxxx

This list observes the Etiquette found at 
http://www.mingw.org/Mailing_Lists.
We ask that you be polite and do the same.  Disregard for the list etiquette may cause your account to be moderated.

_______________________________________________
You may change your MinGW Account Options or unsubscribe at:
https://lists.sourceforge.net/lists/listinfo/mingw-users
Also: mailto:mingw-users-request@xxxxxxxxxxxxxxxxxxxxx?subject=unsubscribe