gpt4 book ai didi

c - 字符串编辑器(无法正常工作)

转载 作者:行者123 更新时间:2023-11-30 15:20:24 24 4
gpt4 key购买 nike

我是 C 新手,遇到了以下问题。我要编写一个可以输入和存储字符串的程序,然后我应该输入两个整数值,然后使用它们从字符串中删除字符,然后打印结果。一旦程序运行,就应该将其转换为函数。

我创建了一个程序,它将输入的字符串拆分为两个字符串,将我想要保留在两个缓冲区中的字符存储在两个缓冲区中,然后将这两个字符串连接起来,得到编辑后的字符串。我遇到的问题是,当我打印编辑后的字符串时,我在末尾得到随机字符,有时在两个字符串之间得到随机字符,我认为这是因为字符串没有正确以 null 终止。我希望有人能够提供帮助,谢谢:)

#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;
}

最佳答案

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

更改此:

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

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

关于c - 字符串编辑器(无法正常工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30034155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com