# probleme editer un fichier txt



## darki (11 Août 2010)

Bonjour, j'ai réussi a éditer un fichier text mais quand j'utilise une variable j'ai un jolie @ ...
voici mon code :  

```
char *str;
asprintf(&str, "ed -s Release <<< $',s/NOM/%@/g\nw'", [nameo stringValue]);
system(str);
```
alors que si je met sa dans un nslog sa affiche le text de mon text field ...
Merci d'avance pour votre aide


----------



## tatouille (11 Août 2010)

bah voila le resultat ne pas connaitre le c avant de se lancer dans l'obj-c et finir par ecrire des choses debiles.
tu crois que tu peux passer un pointer sans espace de memoire...


```
NSString *astring = .....; // OBJ-C OBJECT

const char *ansistr = [astring UTF8String]; get a pointer to a C string
size_t size = strlen(ansistr) + 20;
type_ref * buffer = (type_ref)malloc(size); // Standard C Library
asprintf(&buffer, "ed -s Release <<< $',s/NOM/%s/g\nw'", ansistr); // Standard C Library
free(buffer); //Standard C Library
```


----------



## darki (11 Août 2010)

merci beaucoup pour votre réponse , mais quesque je doit mettre a la place de size et type_ref ?? 
Merci


----------



## tatouille (11 Août 2010)

bah tu dois apprendre le c. (probablement un pointer de char ) et quelque chose comme cela serait plus approprié 
%*.s mais enfin ca c'est pour les grands.

Apres quand on est grand et que l'on sait lire. 


```
NSString *cmd = [NSString stringWithFormat:@"ed -s Release <<< $',s/NOM/%@/g\nw'", aNSStringObject];

system([cmd UTF8String]);

ou

NSString *path = @"/usr/bin/ed";
NSArray *args = [NSArray arrayWithObjects:
    @"-s",
    [NSString stringWithFormat:@"Release <<< $',s/NOM/%@/g\nw'", aNSStringObject],
nil];

[[NSTask launchedTaskWithLaunchPath:path arguments:args] waitUntilExit];
```
mais bon ...  pourquoi n'ouvres tu pas un file descriptor et 
tu ecris dans ton fichier? au lieu d'appeler un utilitaire extern? 
la quid t'es né comme ca ou on t'a marché dessus?

ce fil devrait s'appeler comment ecrire dans un fichier de la maniere la plus tordue ou l'idee premiere née d'un esprit malade.


----------



## mpergand (12 Août 2010)

tatouille a dit:


> tu crois que tu peux passer un pointer sans espace de memoire...





> asprintf, vasprintf - Ecriture formatée dans une chaîne allouée
> 
> DESCRIPTION
> Les fonctions asprintf et vasprintf sont similaires à sprintf et vsprintf, si ce n'est qu'elles allouent une chaîne de caractères de taille suffisante pour contenir la sortie, y compris le NUL terminal, et qu'elles renvoient un pointeur vers cette chaîne via le premier paramètre. Ce pointeur devra être passé en paramètre à free(3) afin de libérer la zone allouée lorsqu'elle ne sera plus nécessaire.


----------



## tatouille (12 Août 2010)

mpergand a dit:


>



The asprintf() and vasprintf() functions set *ret to be a pointer to a
     buffer sufficiently large to hold the formatted string.

comme quoi le traductteur est assez mauvais (ca sent le systran ou le gogole translate):rateau: guigui :rateau: va, 

de plus tu me fais marrer tu devrais jeter un coup d'oeil a certains headers de FreeBSD et specialement la LibC.

et reflechie un peu avant de poster des conneries...

si char mychar[1024]; et asprintf() and vasprintf() vont actuelemment faire un memset ...................... lame.....................


----------



## mpergand (12 Août 2010)

> 12.12.8 Dynamically Allocating Formatted Output
> 
> The functions in this section do formatted output and place the results in dynamically allocated memory.
> 
> ...




```
/* Construct a message describing the value of a variable
             whose name is name and whose value is value. */
          char *make_message (char *name, char *value)
          {
            char *result;
            if (asprintf (&result, "value of %s is %s", name, value) < 0)
              return NULL;
            return result;
          }
```


----------



## tatouille (12 Août 2010)

ok autant pour moi l'implemention OSX semble suivre la cretinerie de la GNU Libc lame ........ pas une reference en matiere d'intelligence, c'est con je leur fesais confiance pourtant... enculés d'Apple team je dois m'excuser plattement maintenant merde fait chier :-D

n'empeche que ca n'a rien a voir avec le premier sujet: l'idée d'ecrire ou lire un fichier de cette facon ne peut etre que née d'un esprit malade pervert et tordu.


----------

