probleme editer un fichier txt

darki

Membre enregistré
12 Juin 2010
6
0
28
Bonjour, j'ai réussi a éditer un fichier text mais quand j'utilise une variable j'ai un jolie @ ...
voici mon code :
Bloc de 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
 
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...

Bloc de code:
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
 
bah tu dois apprendre le c. (probablement un pointer de char :rolleyes:) 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.

Bloc de code:
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.
 
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.
:siffle:
 

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::siffle: 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.....................
 
12.12.8 Dynamically Allocating Formatted Output

The functions in this section do formatted output and place the results in dynamically allocated memory.

— Function: int asprintf (char **ptr, const char *template, ...)
This function is similar to sprintf, except that it dynamically allocates a string (as with malloc;
see Unconstrained Allocation) to hold the output, instead of putting the output in a buffer you allocate in advance.
The ptr argument should be the address of a char * object, and a successful call to asprintf
stores a pointer to the newly allocated string at that location.

The return value is the number of characters allocated for the buffer, or less than zero if an error occurred.
Usually this means that the buffer could not be allocated.

Here is how to use asprintf to get the same result as the snprintf example, but more easily:
Bloc de code:
          /* 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;
          }
 
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.