C语言字符串插入字符代码错误分析及修正
C语言字符串插入字符代码错误分析及修正
这段代码旨在输入一个字符串,并在指定下标位置处插入字符。但代码中存在错误,导致程序无法正常运行。
原始代码:
#include <stdio.h>
#include <string.h>
#define N 81
int main ()
{
static char str[N], ch;
int k, i;
printf("Enter a string:");
fgets(str, N, stdin);
scanf("%d", &k);
scanf(" %c", &ch);
for (i = strlen(str); i >= k; i--)
{
str[i+1] = str[i];
}
str[k] = ch;
for (i = 0; i <= strlen(str); i++)
{
printf("%c", str[i]);
}
return 0;
}
错误分析:
代码的错误在于循环中的条件和循环体内的操作。
-
循环条件应该是
i > k,而不是i >= k。因为在插入字符时,需要将原来的字符向后移动一位,所以循环的起始位置应该是k+1,即从下标为k的位置开始。 -
循环体内的操作应该是将
str[i]赋值给str[i+1],而不是将str[i+1]赋值给str[i]。因为在循环中,需要将当前位置的字符向后移动一位,所以应该将后一个位置的字符赋值给当前位置。
修正后的代码:
#include <stdio.h>
#include <string.h>
#define N 81
int main ()
{
static char str[N], ch;
int k, i;
printf("Enter a string:");
fgets(str, N, stdin);
scanf("%d", &k);
scanf(" %c", &ch);
for (i = strlen(str); i > k; i--)
{
str[i] = str[i-1];
}
str[k] = ch;
for (i = 0; i <= strlen(str); i++)
{
printf("%c", str[i]);
}
return 0;
}
修正后的代码通过正确的循环条件和操作,实现了在指定下标位置处插入字符的功能。
原文地址: https://www.cveoy.top/t/topic/pjNS 著作权归作者所有。请勿转载和采集!