字符串编辑器(无法正常运行)

时间:2015-05-04 15:39:56

标签: c string function strncpy

我是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 个答案:

答案 0 :(得分:1)

由于它是一个字符串,因此您无需逐个字符地打印它。此外,循环表示只打印25个字符串。如果字符串(buffer1)的长度较短(<25),则将打印垃圾值,如果字符串较大(> 25),则不会打印某些chars

改变这个:

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

到此:     printf("%s", buffer1);