22. oktober 2002 - 12:12Der er
22 kommentarer og 1 løsning
char to int & "string"
Hvordan laver man i c (linux) en char om til henholdsvis en int og en streng? Vi har flere chars vi gerne vil sætte sammen til en streng. Vi har også nogle chars der indeholder tal som vi gerne vil sætte sammen og lave til int. Hvordan gøres dette (kodemæssigt)?
Vi gennemlæser en fil og putter hver enkel karakter i filen i en plads i et array(med fgetc). Derefter vil vi så gerne trække fx. de karakter der står fra plads 9-12 i array't ud, og lave disse til en streng. Udtrækningernes størrelse er variabel, altså er det ikke sikkert at det drejer som 4 pladser fra arrayet hver gang (det er blot indtil den møder et linie skift (\n).
Kan du give et eksempel på hvordan fgets() fungere (syntakst) vi skriver fgets(c, sizeof(c), fp) hvor fp er en pointer til vores fil og c er en - char *c;
char array[100]; //det array hvor vi skal have line ind i??
while( !feof( stream ) ) { fgets( line, 200, stream ); //Her vil vi gerne have line ind i et array?? // som fx. array[0]=line; //Der skal en streng ind i på ver array plads? } fclose( stream );
Når vi sætter overstående i en funktion (char *test) får vi en fejl: "warning passing arg 1 of 'fgets' makes pointer from integer without a cast". Hvordan kommer vi over det?
Den kommer desværre stadig med en fejl: "warning from incompatable pointer type" (det er i return sætningen i fileToArray). Her er det vigtigste af koden:
void sale(char *product, char *transactionFile, char *productNrFile, int size, int idNr); void buy(char *product, char *transactionFile, char *productNrFile, int size, int idNr); void totalValue(int idNr); //idNr pga "login". sælgere skal ikke kunne se det totalV og totalT void totalTransaction(int idNr); //same same.... char **fileToArray(char *filename, int line); char c[100][200]; static char fileArray[100][200];
void sale(char *product, char *transactionFile, char *productNrFile, int size, int idNr) { FILE *tFile; FILE *pFile; int amount=0; int i, line=0, a=0; char sign; char **fileArray; char *tempAmount; pFile=fopen(productNrFile,"r+"); tFile=fopen(transactionFile,"a"); fileArray = fileToArray(productNrFile, 5); //returnere indholdet af filen i et array printf("Tallet (sale): %s\n", fileArray[4]); printf("OK\n"); }
char **fileToArray(char *filename, int line) { FILE *fp; int i; int tempLine=0;
Iøvrigt tror jeg at I skal erstatte: sizeof(c) med: sizeof(c[templine])
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.