This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

about scanf retarget in Cortexm3 of SmartFuson of Actel

Hi,

I have one question about Cortexm3 from smartfusion device from actel. Could you pls help me?
I add follwing codes into retarget.c and then add retarget.c into source code group and find :
printf function works.however scanf function doesn't. anybody knows why?

int fputc(int ch, FILE *f) {
return ((int)ITM_SendChar(ch));
}

int fgetc(FILE *f) {
int i=0;
i=ITM_ReceiveChar();
if((-1)!=i)
        return ((int)ITM_SendChar((uint32_t)i));
else
        return (0);
}
  printf("hello world\n\r"); // when executed, string displayed in debug(printf)window
  scanf("%s",str);                // when executed, hard fault occurs

Parents Reply Children
  • And we did get an answer too, containing:

    volatile unsigned char str='\0';
    

    and

    scanf("%s\n",&str);
    


    The huge problem with scanf() is that you may specify a width attribute. But no one is making sure you do. And since people tends to test with good data, huge amounts of programs have been released with sprintf() and no width attribute set. But then again, the world is full of programs that calls scanf() without checking the return value, happilly doing their magic even without all parameters.