2015-05-04 4 views
0

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

Я создал программу, которая разделит введенную строку на две строки, которые хранят символы, которые я хочу хранить в двух буферах, после чего две строки объединяются, чтобы дать результирующую отредактированную строку. Проблема, с которой я сталкиваюсь, заключается в том, что когда я печатаю отредактированную строку, я получаю случайные символы в конце, а иногда между двумя строками, и я думаю, что это потому, что строки не имеют нулевой конец. Я надеюсь, что кто-то сможет помочь, спасибо :)

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

int main() 
{ 

    char string [25]; 
    char buffer1 [25]; 
    char buffer2 [25]; 
    int start; 
    int remove; 
    int i; 
    int finish; 
    int size; 
    int numbercopy; 
    int A, B, C; 

    printf("Enter a string: "); 
    gets(string); 
    printf("\nEnter a starting character position: "); 
    scanf("%d", &start); 
    printf("\nHow many characters would you like to remove? "); 
    scanf("%d", &remove); 


    finish = (start+remove); 
    size = strlen(string); 
    numbercopy = (size-finish); 

    strncpy(&buffer1[0], &string[0], start); 
    buffer1[start] = '\0'; 
    strncpy(&buffer2[0], &string[finish], numbercopy); 
    buffer2[numbercopy] = '\0'; 
    A = strlen(buffer1); 
    B = strlen(buffer2); 
    C = (A+B); 
    strcat(buffer1, buffer2);buffer1[C] = '\0'; 


    for (i=0; i<25; i++) 
    { 
     printf("%c", buffer1[i]); 
    } 
    return 0; 
} 

ответ

1

Поскольку это строка, вам не нужно печатать символ по символу. Кроме того, цикл указывает, что будет напечатано только 25 строк символов. Если строка (buffer1) короче по длине (< 25), значения мусора будут напечатаны, если строка больше (> 25), некоторая chars не будет напечатана.

Изменить это:

for (i=0; i<25; i++) 
{ 
printf("%c", buffer1[i]); 
} 

к этому: printf("%s", buffer1);

+0

Спасибо за помощь действительно ценю это !! – ATDudman

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