Je me demandais comment je peux copier une partie d'une chaîne à l'autre, donc j'ai vérifié ce Web pour voir si je pouvais obtenir une réponse, et je l'ai: How can I copy part of another string in C, given a starting and ending indexImpossible de copier une partie d'une chaîne
Cependant, quand j'utilise cette
strncpy(dest, src + beginIndex, endIndex - beginIndex);
sur mon code, cela ne fonctionne pas. Pourquoi? Je pense que j'ai ajouté les index correctement.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#define MAX 15
int main()
{
int j=0;
int i;
char RPNarray[MAX];
printf("Enter the RPN");
fgets(RPNarray,MAX,stdin);
int t=strlen(RPNarray);
double RPN[t][2];
for(i=0;i<=t;i++)
{
if(isspace(RPNarray[i]))
{
i=i+1;
}
else if (isdigit(RPNarray[i]))
{
int q,h;
q=i;
for (h=i;isdigit(RPNarray[h]);h++)
{
h=h+1;
}
int r;
double u;
r=h-q;
char number[r];
printf("%s ", RPNarray);
strncpy(number,RPNarray + q,h - q);
printf ("%s\n",number);
u=atof(number);
printf("%lf.\n",u);
RPN[j][0]=0;
RPN[j][1]=u;
i=i+1;
j=j+1;
}
}
int b;
for (b=0;b<=j;b++)
{
printf("%lf %lf \n",RPN[b][0],RPN[b][1]);
}
}
r
est le nombre de chiffres du numéro, q
la position du premier chiffre du nombre et h la première position après que le nombre qui ne soit pas un nombre.
Ce programme devrait imprimer la matrice RPN comme le code l'indique.
(0,(first number we introduce via stdin)
(0,(second number we introduce via stdin)
(0,(third number we introduce via stdin)
J'ai également ajouté plus d'impressions pour voir où est le problème, et comme vous pouvez le voir, la deuxième impression n'est pas imprimé comme il se doit.
Si l'entrée est:
56 6
The output is:
56 6
56OT?
56.000000.
vector 0.000000 56.000000
vector 0.000000 0.000000
Que puis-je faire la sortie est:
56 6
56
56.000000.
56 6
6
6.000000.
vector 0.000000 56.000000
vector 0.000000 6.000000
Merci
Veuillez modifier votre message et corriger l'indentation. – Lundin
Apprenez à utiliser un débogueur et parcourez le code ligne par ligne. –
Les conditions de fin de boucle '<=' sont suspectes. Dans le premier 't' passe la longueur de la chaîne. Dans le second 'b' est l'indexation d'un élément de' RPN [b] 'qui n'a pas été défini à la valeur actuelle de' j', qui a été incrémentée après son utilisation. –