2017-01-02 4 views
0

Ich muss ein Wort ausgeben, die ich eine Nummer von ihm eingeben .. Ich kann nicht, wie ich eine Zahl zu einem Wort zuweisen sollte. Hier verwende ich ein func strtok() für meinen Satz auf Worte zu brechen, dann verloren im, .. für ExMP: "hhh jjjj kkkkk llllll" i 3 eingegeben es ouputs: kkkkkAusgabe das richtige Wort

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

int main() 
{ 
    char str[80],*p; 
    char sp[20]=" "; 
    int i,n=0,num; 
    printf("Enter your line: "); 
    gets(str); 
    p=strtok(str,sp); 
    while (p!=NULL){ 
     for(i=0;i<p;i++){ 
      printf("%s - [%d]\n",p,i+1); 
      p=strtok(NULL,sp); 
      n=p; 
     } 
     n++; 
    } 
    printf("n: "); 
    scanf("%d",&num); 
    if(num==n){ 
     printf("%s",p); 
    } 

    return 0; 
} 
+5

Verwenden Sie 'gets()' nie. Es ist zu gefährlich. –

+0

Zeigen Sie Ihre Eingabe und Ausgabe erwartet. – BLUEPIXY

+1

Erstellen Sie ein Array von Wörtern, d. H. Ein Array von char [], jedes Element enthält ein Wort. Und achten Sie auf den Index, Arrays sind 0-basiert, im menschlichen Geist gibt es eher 1-basierte. – StephaneM

Antwort

0

1) sollte nicht gets verwenden. Das ist hier, warum ist fgets(str, sizeof str, stdin);

2) i eine Nummer eines Wortes eingeben VOR i die Zeile

3) beginnen Zeichenüber der Hauptalgorithmus ist in dieser:

while (p != NULL && n < num){ if(++n == num){ printf("%s\n", p); break; } p=strtok(NULL, sp); }

in meinem Schleife n steigt, während es Wort findet, wenn ein Benutzer eine Zahl eingibt und es gleich zu num, so bricht es aus einer Schleife aus und druckt es aus.

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

    int main(void){ 
     char str[80], *p; 
     const char *sp = " \n"; 
     int n = 0, num = 0; 

     printf("Enter your line: "); 
     fgets(str, sizeof str, stdin); 
     printf("n: "); 
     scanf("%d", &num); 

     p = strtok(str, sp); 
     while (p != NULL && n < num){ 
      if(++n == num){ 
       printf("%s\n", p); 
       break; 
      } 
      p=strtok(NULL, sp); 
     } 

     return 0; 
    } 
Verwandte Themen