ich mich gefragt, wie ich einen Teil einer Zeichenfolge in einem anderen kopieren, so schaute ich diese Web zu sehen, ob ich eine Antwort bekommen konnte, und ich tat: How can I copy part of another string in C, given a starting and ending indexkann nicht Teil einer Zeichenfolge kopieren
Allerdings, wenn ich diese verwenden
strncpy(dest, src + beginIndex, endIndex - beginIndex);
auf meinem Code, funktioniert es nicht. Warum? Ich denke, ich habe die Indexe richtig hinzugefügt.
#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
ist die Anzahl der Ziffern der Zahl, q
die Position der ersten Ziffer der Zahl und h die erste Position nach der Zahl, die nicht eine Zahl ist.
Dieses Programm sollte die RPN-Matrix wie der Code sagt drucken.
(0,(first number we introduce via stdin)
(0,(second number we introduce via stdin)
(0,(third number we introduce via stdin)
Ich habe auch mehr Drucke hinzugefügt, um zu sehen, wo das Problem ist, und wie Sie sehen können, der zweite Druck wird nicht gedruckt, wie es sollte.
Wenn die Eingabe:
56 6
The output is:
56 6
56OT?
56.000000.
vector 0.000000 56.000000
vector 0.000000 0.000000
Was kann ich die Ausgabe zu tun, so ist:
56 6
56
56.000000.
56 6
6
6.000000.
vector 0.000000 56.000000
vector 0.000000 6.000000
Danke
Bitte bearbeiten Sie Ihren Beitrag und korrigieren Sie die Einrückung. – Lundin
Erfahren Sie, wie Sie einen Debugger verwenden und Zeile für Zeile durch den Code gehen. –
Die Loop-Endbedingungen '<=' sind verdächtig. In der ersten geht 't' über die Länge der Saite hinaus. In der zweiten indexiert "b" ein Element von "RPN [b]", das nicht auf den aktuellen Wert von "j" gesetzt wurde, der nach der Verwendung inkrementiert wurde. –