[C] Int omzetten naar char

Pagina: 1
Acties:
  • 138 views sinds 30-01-2008
  • Reageer

  • Hark
  • Registratie: Februari 2001
  • Laatst online: 08-07-2025
Ik heb denk ik een hele makkelijke vraag maar ik kom er niet uit. Ik wil de waarde van k op de eerste plek van een sting zetten. In de string staat 0.jpg en k is bijvoorbeeld 1, dus de string moet dan worden 1.jpg. Hoe kan ik dit doen? Ik heb nu dit:

int k;
char file[5];

for(k=1;k<10;k++)
{
strcpy(file,"0.jpg");
file[0]=k;
}

Maar dat werkt niet omdat zo niet een 1 op de plek van de nul word gezet, maar een raar ascii-tekentje (een gezichtje). dat is ook wel logisch, maar ik weet niet hoe ik die 1 daar moet krijgen. Op de een of andere manier moet ik een int dus omzetten in een char.

  • Hark
  • Registratie: Februari 2001
  • Laatst online: 08-07-2025
Ik heb het nu opgelost met:

file[0]=(k+'0');

Maar is dit wel de beste manier?

  • BurningSheep
  • Registratie: Januari 2000
  • Laatst online: 03-05 22:13
zolang k niet groter wordt dan 9 werkt het prima, misschien nuttig om de functie itoa ff op te zoeken

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Er zit wel een serieuze fout in je code
code:
1
2
3
4
5
6
7
8
   int k;
   char file[5];
   
   for(k=1;k<10;k++)
   {
    strcpy(file,"0.jpg");
    file[0]=k;
   }

Je hebt een array file van 5 characters. Strings in C zijn altijd zero-terminated, dwz dat achter de string altijd het null-character staat.

Dus je array moet 6 characters groot zijn, oftewel:
char file[6];

Overigens hoef je de strcpy () niet steeds uit te voeren, omdat je toch alleen maar het eerste character overschrijft
Dus misschien is het handiger om het zo te doen:
code:
1
2
3
4
5
6
7
   int k;
   char file[] = "0.jpg";
   
   for(k = 1; k < 10; k++)
   {
    file[0] = k + '0';
   }

Let nu ook op het feit dat ik geen arraygrootte heb opgegeven. Dit kan alleen als je de array gelijk initializeert (dus een '= blablabla' erachter), en de C-compiler maakt de array dan automatisch de goede lengte

.edit: woeps, + '0' vergeten :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:04

Creepy

Tactical Espionage Splatterer

In die array zet je hard die waarden.. die kan je zien als ascii waarden.. als je dus 0 hard in de file zet, zet je dus het karakter met ascii waarden 0 in het bestand (daarom heb je dus van die vage tekens)
waarde+'0' werkt dus correct, ook als je hoger gaat dan 9, alleen zul je dan dus geen getallen meer krijgen maar andere karakters..

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

code:
1
2
3
4
5
6
7
char k;
char file[] = "0.jpg";

for(k = '0'; k <= '9'; ++k)
{
  *file = k;
}

Pompiedom ;)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-09 23:15
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h> /* alleen getch */

void main() {

    char file[200]={0};

    for (int nummertje=0;nummertje<10;nummertje++) {

        sprintf(file,"%1d.jpg",nummertje);

        /*Doe hier uw ding met file*/
    }
    getch();
}

... Oh en hij werkt ook met waarden groter dan 9 ;) ...

[edit]
tralalaaaaa.... :P

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Hark
  • Registratie: Februari 2001
  • Laatst online: 08-07-2025
Bedankt allemaal!
Pagina: 1