2016-08-03 2 views
0

Вот мой код. В настоящее время он открывает текстовый файл и печатает определенную строку в зависимости от ввода пользователя. Я хотел бы теперь отделить указанную строку от появления выбранного разделителя (например, запятой), чтобы я мог получить отдельные фрагменты информации (например, вес, высота, цвет глаз, имя, возраст и т. Д.). Как бы я идти об этом, что (Edit им пытаются использовать ввод текста для определения строки распечатываются и нада помощь?)Как разделить строку текста на разделителях

 #include<stdio.h> 
#include <string.h> 
#include <stdlib.h> 
    int main() 
    { 
      const char delim[2] = ","; 
      char *token; 
      int j =0; 
      char hh[3]; 
      FILE *ptr_file; 
      char buf[1000]; 
      ptr_file =fopen("input.txt","r"); 
      if (!ptr_file) 
      return 1; 
      char *pt[] = { 
       "H","He","Li","Be","B","C","N","O","F","Ne","Na" 

      }; 
    printf("what element do you want\n"); 
    scanf("%s", &hh); 
    for(j=0; j<= 3; j++) 
    { 
     if(hh == pt[j]) 
     { 
     fgets(buf,1000, ptr_file); 
       token = strtok(buf, delim); 
       while(token != NULL) 
       { 
       printf("%s\n", token); 
       token = strtok(NULL, delim); 
       } 

       break; 
     }else  
     { 
      fgets(buf,1000, ptr_file); 
      continue; 
     } 
    }  
     fclose(ptr_file); 
      return 0; 
    } 
+0

@BLUEPIXY ооо упс я удалю это. –

+0

Функция 'strtok()' может делать то, что вам нужно. –

ответ

1

Если у вас есть предложение: «Вес, рост, цвет глаз, Имя , Age ", вы можете токенизировать строку и разделить ее запятой (", ") с помощью

char * strtok (char * str, const char * delim) функционирует следующим образом.

char buf[1000] = "Weight,Height,Eye color,Name,Age"; 
const char delim[2] = ","; 
char *token; 

//This retrieves the first token 
token = strtok(buf, delim); 

while(token != NULL) 
{ 
    printf("%s\n", token); 
    token = strtok(NULL, delim); 
} 

Выход:
Вес
Высота
Цвет глаз
Имя
Возраст

+0

Итак, я должен использовать свой текущий вывод и запустить его через это? – John

+0

После того, как ваш первый fgets() заполняет buf, скопируйте строку 2 в код, который я отправил в конец цикла while, и поместите его под ваш вызов fgets(). Вы должны увидеть, как он работает так, как вам хотелось бы. Затем вы должны оптимизировать свой блок кода, разместив разделитель вне цикла for и т. Д. – Sterls

+0

В качестве альтернативы вы можете просто создать функцию с кодом, который я использовал, который берет строку и разделитель в качестве параметров и выводит токены. Вызовите эту функцию с вашим заполненным «buf», и это должно очистить код. – Sterls

Смежные вопросы