Hey Leute ich versuche grade in meinem Header eine Funktion zu schreiben die einen String in Integer-Werte umwandelt und als char* zurückgibt...
(out ist im als globale Variable im Kopfteil des Header deklariert)
Wenn ich das ganze aber jetzt aufrufe indem ich
ausführen lasse, liest er immer nur ein Wort ein...
Wenn ich das %s aber zum Beispiel durch ein %100c ersetze wartet er bis ich exakt 100 Zeichen eingegeben habe :/
Wie kann ich also den String einlesen ohne das er beim ersten Whitespace abbricht?
Danke schonmal, MCStreetguy
Code:
char* strHash(char in[])
{
int end = strlen(in), i = 0, pos = i;
while(i<end)
{
switch(in[i])
{
case 'a': out[pos] = '0'; break;
case 'A': out[pos] = '1'; break;
case 'b': out[pos] = '2'; break;
case 'B': out[pos] = '3'; break;
case 'c': out[pos] = '4'; break;
case 'C': out[pos] = '5'; break;
case 'd': out[pos] = '6'; break;
case 'D': out[pos] = '7'; break;
case 'e': out[pos] = '8'; break;
case 'E': out[pos] = '9'; break;
case 'f': out[pos] = '1'; pos ++; out[pos] = '0'; break;
case 'F': out[pos] = '1'; pos ++; out[pos] = '1'; break;
case 'g': out[pos] = '1'; pos ++; out[pos] = '2'; break;
case 'G': out[pos] = '1'; pos ++; out[pos] = '3'; break;
case 'h': out[pos] = '1'; pos ++; out[pos] = '4'; break;
case 'H': out[pos] = '1'; pos ++; out[pos] = '5'; break;
case 'i': out[pos] = '1'; pos ++; out[pos] = '6'; break;
case 'I': out[pos] = '1'; pos ++; out[pos] = '7'; break;
case 'j': out[pos] = '1'; pos ++; out[pos] = '8'; break;
case 'J': out[pos] = '1'; pos ++; out[pos] = '9'; break;
case 'k': out[pos] = '2'; pos ++; out[pos] = '0'; break;
case 'K': out[pos] = '2'; pos ++; out[pos] = '1'; break;
case 'l': out[pos] = '2'; pos ++; out[pos] = '2'; break;
case 'L': out[pos] = '2'; pos ++; out[pos] = '3'; break;
case 'm': out[pos] = '2'; pos ++; out[pos] = '4'; break;
case 'M': out[pos] = '2'; pos ++; out[pos] = '5'; break;
case 'n': out[pos] = '2'; pos ++; out[pos] = '6'; break;
case 'N': out[pos] = '2'; pos ++; out[pos] = '7'; break;
case 'o': out[pos] = '2'; pos ++; out[pos] = '8'; break;
case 'O': out[pos] = '2'; pos ++; out[pos] = '9'; break;
case 'p': out[pos] = '3'; pos ++; out[pos] = '0'; break;
case 'P': out[pos] = '3'; pos ++; out[pos] = '1'; break;
case 'q': out[pos] = '3'; pos ++; out[pos] = '2'; break;
case 'Q': out[pos] = '3'; pos ++; out[pos] = '3'; break;
case 'r': out[pos] = '3'; pos ++; out[pos] = '4'; break;
case 'R': out[pos] = '3'; pos ++; out[pos] = '5'; break;
case 's': out[pos] = '3'; pos ++; out[pos] = '6'; break;
case 'S': out[pos] = '3'; pos ++; out[pos] = '7'; break;
case 't': out[pos] = '3'; pos ++; out[pos] = '8'; break;
case 'T': out[pos] = '3'; pos ++; out[pos] = '9'; break;
case 'u': out[pos] = '4'; pos ++; out[pos] = '0'; break;
case 'U': out[pos] = '4'; pos ++; out[pos] = '1'; break;
case 'v': out[pos] = '4'; pos ++; out[pos] = '2'; break;
case 'V': out[pos] = '4'; pos ++; out[pos] = '3'; break;
case 'w': out[pos] = '4'; pos ++; out[pos] = '4'; break;
case 'W': out[pos] = '4'; pos ++; out[pos] = '5'; break;
case 'x': out[pos] = '4'; pos ++; out[pos] = '6'; break;
case 'X': out[pos] = '4'; pos ++; out[pos] = '7'; break;
case 'y': out[pos] = '4'; pos ++; out[pos] = '8'; break;
case 'Y': out[pos] = '4'; pos ++; out[pos] = '9'; break;
case 'z': out[pos] = '5'; pos ++; out[pos] = '0'; break;
case 'Z': out[pos] = '5'; pos ++; out[pos] = '1'; break;
default: out[i] = in[i]; break;
}
i ++;
pos ++;
}
out[pos+1]='\0';
return out;
}
Wenn ich das ganze aber jetzt aufrufe indem ich
Code:
#include<ext\hash.h>
int main()
{
char in[500];
int i;
scanf("%s",in);
printf(strHash(in));
fflush(stdin);
getchar();
return 0;
}
Wenn ich das %s aber zum Beispiel durch ein %100c ersetze wartet er bis ich exakt 100 Zeichen eingegeben habe :/
Wie kann ich also den String einlesen ohne das er beim ersten Whitespace abbricht?
Danke schonmal, MCStreetguy