2013-05-09 3 views
0

Supposons que j'ai une chaîne char [20];comment ajouter la moitié de la chaîne à l'ancienne chaîne?

Et si je voudrais lire une chaîne à partir d'un fichier en utilisant fscanf, et depuis le premier caractère sera toujours être sautées si je fscanf(),

Puis je ferai le comme suit:

string[0] = x //where x is the char from fgetc(); 

alors j'appellerai fscanf, qui remplira la chaîne restante [1- 19] par exemple, comment puis-je archiver ceci sans utiliser stringcat?

J'ai essayé quelque chose comme

*string++;// but this give me a left operand error 

par exemple:

entrée:

bonjour 123 1.2 '\ n' bye 124 0,02

Code:

while ((y = fgetc(file2)) != EOF) 
    { 
     if(y != '\n') 
     { 
      fscanf(file2,blah blah);//I scanf the string, the int and the double 
     } 
     else 
     { 
      printf(); // I will get everything on the line without the first char 
     } 
    } 
+0

Pourquoi le premier caractère sera-t-il ignoré? –

+0

fscanf seulement lire le prochain caractère n'est-ce pas? – user1701840

+0

Pas vrai. 'man fscanf' et' man printf'. Ou lisez K & R. –

Répondre

0

si vous voulez mettre la chaîne lue par le fscanf() à partir de l'élément 1 de votre tableau, vous pouvez utiliser le code suivant:

fscanf(file2, "%18s", string+1); 

string est un objet de tableau et non un pointeur de sorte que vous ne pouviez pas utiliser l'opération string++ pour un objet tableau. parce que cela équivaut à:

string = string + 1; 

Ici vous assignez à l'objet tableau une nouvelle valeur qui est interdite dans C.

Qu'est-ce que vous pouvez faire pour accéder à votre tableau de chaînes de l'élément 1 est pour utiliser string + 1 (sans l'affecter au tableau de chaînes). string + 1 Renvoyer un pointeur sur l'élément 1 de votre tableau string

Questions connexes