【问题标题】:String Editor (not functioning correctly)字符串编辑器(无法正常运行)
【发布时间】:2015-05-04 15:39:55
【问题描述】:

我是 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;
}

【问题讨论】:

    标签: c string function strncpy


    【解决方案1】:

    因为它是一个字符串,所以你不需要逐个字符地打印它。此外,循环指示将仅打印 25 个字符字符串。如果字符串(buffer1)的长度较短(25),则不会打印一些chars

    改变这个:

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

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

    【讨论】:

    • 感谢您的帮助,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    相关资源
    最近更新 更多