Avatar billede cmau Nybegynder
30. september 2005 - 09:36 Der er 11 kommentarer og
1 løsning

En form for funktionen str_replace i C?

Hey

Jeg er helt nu inden for C++

Så jeg vil lige spørge om et par ting, så jeg kan komme til at lave en lille sjov oversætter.

Hvis nogen ville prøve at sætte noget sammen for mig også forklare ville jeg blive glad.

Det skla bare være simpelt ¨sådan at når man skriver normalt skal den lave alle l'er om til 1'taller, så skal det være sådan at alle de bogstaver/ord som skal oversættes skal være i et array.

Direkte når man skriver skal den så ikke vise l'erne, men bare 1'tallerne med det samme.
Avatar billede arne_v Ekspert
30. september 2005 - 09:43 #1
hvis du bruger C strenge (nul terminerede char arrays) så kan du nok bruge:

void replace(char *s,char *s1,char *s2)
{
  int i,j;
  char *tmp;
  tmp = (char *)malloc(strlen(s)+1);
  strcpy(tmp,s);
  i = 0;
  j = 0;
  while(i<strlen(tmp)) {
      if(strncmp(tmp+i,s1,strlen(s1))==0) {
        strcpy(s+j,s2);
        i=i+strlen(s1);
        j=j+strlen(s2);
      } else {
        s[j]=tmp[i];
        i++;
        j++;
      }
  }
  s[j] = '\0';
  free(tmp);
  return;
}
Avatar billede cmau Nybegynder
30. september 2005 - 10:14 #2
omfg.. hmm

Forstår ikke helt C strenge hvad du mener med det. kan heller ikke se hverken hoved eller hale i den kode, kan du evt. forklare?
Avatar billede arne_v Ekspert
30. september 2005 - 10:19 #3
I C++ kan du bruge forskellige slags strenge:

C strenge (nul terminerede char arrays)

ANSI C++ STL string (std::string)
Avatar billede arne_v Ekspert
30. september 2005 - 10:19 #4
hvor langt er du kommet med at lære C++ ?
Avatar billede cmau Nybegynder
30. september 2005 - 10:20 #5
Startede med at kigge på artikler for ca. 1 uge siden.

Men jeg troede nu at der var en nem måde som str_replace i php
Avatar billede arne_v Ekspert
30. september 2005 - 10:33 #6
den funktion svarer i funktionalitet meget til PHP str_replace
Avatar billede cmau Nybegynder
30. september 2005 - 10:36 #7
Hvordan ville jeg så kunne lave et array mange bogstaver og det der skal erstatte bogstavet?
Avatar billede arne_v Ekspert
30. september 2005 - 18:55 #8
char x[] = "Dette er en lille test",
replace(x,"l","1");
Avatar billede bertelbrander Novice
01. oktober 2005 - 00:08 #9
Eller lidt mere C++'sk:

#include <string>
#include <iostream>

void StringReplace(std::string &aStr, const char *aToRemove, const char *aToInsert)
{
  std::string::size_type pos;
  while((pos = aStr.find(aToRemove)) != std::string::npos)
      aStr.replace(pos, strlen(aToRemove), aToInsert);
}

int main()
{
  std::string Test = "Dette er en lille test";
  StringReplace(Test, "l", "1");
  std::cout << Test << std::endl;
}
Avatar billede cmau Nybegynder
02. oktober 2005 - 18:24 #10
Har selv lavet en i php, hvor jeg har i 2 array'er hvilke bogstraver der skal skiftes:

$bogstaver = array("l", "e", "a","s","t","o","æ","ø","å");
$tal = array("1", "3", "4","5","7","0","Q","Q","Q");

Kan det så gøres sådan at når en bruger skriver så med det samme han trykker l skriver den 1??
Avatar billede bertelbrander Novice
02. oktober 2005 - 21:51 #11
Det kan man (sansynligvis) godt. Måden det gøres på afhænger af hvilken type applikation (windows, console, ...) og hvilken compiler man bruger.
Avatar billede cmau Nybegynder
24. oktober 2005 - 16:44 #12
hmm har ikke burg for det alligevel :S En ven lavede noget andet.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester