2013-11-23 2 views
2

Хотели ввод ->значения Вставить в массив в C

"Enter a word: program" 
"Enter a postion to know where to start cutting: 2" 
"Enter the following quantity to end up: 4" 

Хотел Выход ->

ogra 

Это мой код, но я не знаю, как вставить значения в другой массив

#include <stdio.h> 
#include <string.h> 
int main(){ 

    char word[100], cutword[50]; 
    int on, off, i, j; 

    printf("Entra a word: "); 
    gets(word); 
    printf("Enter a postion to know where to start cutting: "); 
    scanf("%d", &on); 
    printf("Enter the following quantity to end up: "); 
    scanf("%d", &off); 

    for (i = 0; i<strlen(word); i++){ 
     if (i >= on && i <= off) ¿cutword[]? = word[i]; 
    } 

    for (j = 0; j<strlen(cutword); j++){ 
     printf("%c", cutword[j]); 
    } 

} 
+0

Что такое, что ** ¿cutword []? ** – Artur

ответ

3
int k = 0; 
int l = on + off; 
for (i = on; i < l; i++){ 
    cutword[k++] = word[i]; 
} 

for (j = 0; j < k; j++){ 
    printf("%c", cutword[j]); 
} 

Поместите некоторые дополнительные if для подтверждения ввода и проверки границ массива перед этими петлями.

0
// if there is enough room in the buffers 
if(strlen(word) > off) { 
    // copy from word + (offset) 
    //  to cutword[0] 
    //  off number of characters 
    memcpy(cutword, word + on, off); 
} 

то будет, если вы хотите от позиции 2 получить 4 символы

ваш код получает позицию 2 в положение 4.

+0

и без подготовленная функция, как это будет? – frankie3

+0

@ frankie3 вы для цикла учитываете 'on' до' off' или слово [2] через слово [4] .. если вы замените цикл for в своем коде memcpy, он будет перемещать все 4 символа за один раз в противоположность один за раз. – corn3lius

0

Проблема с вашей первой петлей for. Перебор это только до off + on и заменить вашу ¿cutword[]? = word[i]; часть с cutword[j++] = word[i]; Попробуйте

for (j = 0; i = 0; i < off + on; i++){ 
    if (i >= on && i <= off) 
     cutword[j++] = word[i]; 
} 
cutword[j] = '\0'; 
puts(cutword); 
Смежные вопросы