2013-12-15 2 views
-2

Я пытаюсь сделать функцию, которая получает строку и число от пользователя, а затем делает каждую длину слова такой же, как номер, который я получил от пользователя, и печатает новую строку.
, например:сортировка слов в строке

abcd__efgh_i 
number = 3 
and i should get 
abc_def_ghi 

#include <stdio.h> 
void f(char * p, int n) { 
    int i = 0, br = 0, d, m = 0, br1 = 0, g; 
    while (p[i] != '\0') { 
     if (p[i] != '\0') { 
      br++; 
     } 
     i++; 
    } 
    if (br % n == 0) { 
     d = (br/n) - 1; 
    } else { 
     d = (br/n); 
    } 
    g = br + d; 
    char b[g]; 
    i = 0; 
    while (p[i] == '\0') { 
     if (p[i] == '\0') { 
      while (p[i] == '\0') { 
       i++; 
      } 
     } else { 
      b[m] = '\0'; 
      m++; 
      br1 = 0; 
     } 
     b[m] = p[i]; 
     m++; 
     i++; 
     br1++; 
     if (m == g) { 
      b[m] = '\0'; 
     } 
    } 

    printf("%s", b); 
} 
+3

Пожалуйста, измените свой вопрос, чтобы исправить свой код отступы, так что это читаемым. Благодаря! –

+1

Итак ... в чем вопрос? – Qiu

+0

он не работает, как и должен я спрашиваю, как это сделать правильно. Это мой первый запрос на помощь здесь, так что за любые ошибки – user3104490

ответ

0
void f(const char * p, int n) { 
    char b[n+1]; 
    int i=0; 
    while(*p){ 
     if(*p == ' '){ 
      ++p; 
      continue;//skip 
     } 
     b[i++] = *p++; 
     if(i % n == 0){ 
      b[i] = '\0';//move out from loop 
      printf("%s ", b); 
      i = 0; 
     } 
    } 
    printf("\n"); 
} 
1
#include <stdio.h> 

void 
shuffle (const char *str, unsigned int n) { 
    unsigned int i = 0; 

    // loop until the end of the string is found 
    while (*str) { 

     // Examine the current character. If it is not a space, output it 
     // and increment the number of characters output so far in the current word 
     if (*str != ' ') { 
      putchar (*str); 
      ++i; 
     } 

     // Move to the next character 
     ++str; 

     // Check if we have output "n" characters so far. If so, output a space to 
     // separate words and reset the character count 
     if (i == n) { 
      putchar (' '); 
      i = 0; 
     } 
    } 
    // Put a single new line at the end 
    putchar ('\n'); 
} 

int 
main() { 
    shuffle ("abcd efgh i jk", 3); 
} 
+0

Нет объяснений? Копировать + Вставить = Понимание? – usr2564301

+0

Я думаю, что комментарии объясняют, что происходит довольно хорошо. – chill

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