Hallo zusammen,
anbei ein Programmsegment:
void InputStr(char *buffer, unsigned short maxlen, int x, int y)
{
short key;
unsigned short i = 0;
unsigned short j = 0;
buffer[0] = 0;
char lis[8];
char *num;
char num1[8];
unsigned short anz;
unsigned short anz1;
// float zahl;
for(j =0;j<8;j++)
lis[j] = 0;
num1[j] = 0;
do
{
MoveTo (x+50,y);
printf ("%s_ ", buffer);
// Note that two spaces are required only if the F_4x6 font is
used
key = ngetchx ();
if (key >= ' ' && key <= '~' && i < maxlen)
buffer[i++] = key;
else if (key == KEY_BACKSPACE && i)
i--;
buffer[i] = 0;
} while (key != KEY_ENTER);
num = strpbrk(buffer,"=");
anz = strlen(buffer)-strlen(num);
anz1 = strlen(buffer)-strlen(num+1);
strncpy(lis,buffer,anz);
for (j=anz1;j<=strlen(buffer);j++)
strncpy(num1,buffer[j],1);
es funktioniert bis zur letzten Zeile, jedoch die letzte Zeile!!
Ich bekomme die Fehlermeldung:
Passing argument 2 of '*(*200u + 2484u)' makes pointer from integer
without a cast.
Was ist hier falsch??
Kann mir jemand helfen, und danke im voraus
>> strncpy(num1,buffer[j],1);
buffer[j] gibt den Inhalt des j.Elements von buffer an, aber nicht
seine Adresse!
Es müßte richtig heißen:
strncpy(num1, buffer + j, 1);
Egal, ob das Ganze sinnvoll ist oder nicht.
Bernhard
Gast
#1068420
ist mir auch klar, ich wollte lediglich von einem string (z.B "=123") nur den Zahlteil haben, also nur "123", hatte aber keinen anderen Befehl zur Verfügung. Jedenfalls vielen Dank für Deine Antwort, Gruss Balazs (weiss allerdings immer noch nicht wie man so macht)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.