2010-11-07 5 views

Répondre

3

Vous ne pouvez pas affecter des chaînes comme celle de C. A la place, utilisez strcpy(substr[0], "abc"). De plus, utilisez %s pas %d dans votre printf

+0

puis comment l'imprimer? – friends

+1

'printf ("% s ", substr [0]);' –

0

Hope this helps:

void main(void) 
{ 
    char* string[10]; 
    string[0] = "Hello"; 
} 

Sinon, je pense ya besoin de le copier manuellement ou utiliser strcpy ou similaire pour le déplacer d'un bloc de mémoire à une autre .

3

Je déteste donner des réponses « complètes » aux questions de devoirs, mais la seule façon de répondre à votre question est de vous montrer la réponse à votre problème, car il est si fondamental:

#include <stdio.h> 
#include <string.h> 

#define MAXLEN 20 

char substr[10][MAXLEN]; 

int main(void) { 
     strncpy(substr[0], "abc", MAXLEN); 
     puts(substr[0]); 
     return 0; 
} 

Votre code (comme est) a plusieurs défauts:

  • Vous traitez substr[0] comme chaîne littérale. Tu ne peux pas faire ça.
  • Vous n'utilisiez pas correctement les formateurs printf. %s est pour les chaînes
  • Vous ne besoin déranger printf() pour imprimer une chaîne
  • Vous devriez (en code réel) pour surveiller les dépassements de tampon, d'où strncpy()
  • Si main() ne veut pas/argc et argv, ses arguments doivent être void
  • main() doit renvoyer une valeur, comme son type de retour est int
  • Vous n'utilisez quoi que ce soit sur <stdlib.h>, pourquoi l'inclure?

Je suggère de rechercher des littéraux de chaîne, les fonctions disponibles dans <string.h> ainsi que les spécificateurs de format.

Notez également, je suis pas vérifier le retour de strncpy(), ce qui est quelque chose que vous devriez faire. C'est laissé comme un exercice pour le lecteur.

Questions connexes