Hello! I am trying to use sprintf, but get no result (C51, version 5.20).
char xdata command [80], i=100; strcpy (command, "Hello!"); // now command contains "Hello!" sprintf (command, "Test %d", i); // command has not changed
Why would sprintf not work? It's working. If you want to see the value 100 ( 64h 'd' ) you need to change the format string argument, %d means int, if you put %c it will work as expected because you are using a char data type.
char xdata command [80], i=100; sprintf (command, "Test %c", i); // command has changed
Tried that, but it still doesn't do it. I can even do it simpler:
sprintf (command, "Test");
char i=100; sprintf (command, "Test %c", i); // command has changed
How do you "know" it doesn't work? What are you using to test it? Jon
Hi Alex, Thank you for your help. It is a bit hard to explain without listing a large amount of source code here. What I initialy did is I took a function I wrote using C166 that uses a bunch of sprintf commands, and copied it into my C51 source code. Now, my sprintf commands that work fine with C166 don't work with C51. Is there a major difference? I would have thought that's an ANSI command and it should work the same way in every C compiler version. After executing the line:
sprintf (command, "Just a text");
Jon, I display the content of my variable before and after the sprintf command. We have 2 similar devices, one using an 8bit C51 program, the newer one using a 16bit C166 program. C166 works fine, but the same sprintf commands in C51 don't seem to affect the variable that sprintf is supposed to change (I can do a bunch of sprintf commands without changing the initial value of my variable). Holger
I would have thought that's an ANSI command and it should work the same way in every C compiler version. This command is ANSI C patern. It's really strange the fact that you can't see it working. What is the simulator that you're attempting to watch it? - Alex
I am not using a simulator, I test the software directly with our custom hardware (works since a few years, no problem on that side), and show the variable on an attached display. Holger
Sorry but, in this case, if the code works out of the hardware ( simulation only ) I think an Emulator may help you catch what is going on with your hardware.
View all questions in Keil forum