我是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;
}
答案 0 :(得分:1)
由于它是一个字符串,因此您无需逐个字符地打印它。此外,循环表示只打印25个字符串。如果字符串(buffer1
)的长度较短(<25),则将打印垃圾值,如果字符串较大(> 25),则不会打印某些chars
。
改变这个:
for (i=0; i<25; i++)
{
printf("%c", buffer1[i]);
}
到此:
printf("%s", buffer1);