注册 登录
编程论坛 C语言论坛

新手求助:编写程序,输入一个字符串,删除从指定位置k开始的n个字符,k和n的值由键盘读入。

w的平方 发布于 2023-05-24 21:55, 1318 次点击
程序代码:
#include <stdio.h>
#include <string.h>
#define N 80
int main()
{
    char s[N];
    int k,n,i;
    gets(s);
    scanf("%d%d",&k,&n);
    for(i=k;i<strlen(s)-n;i++)
    {
        s[i]=s[i+n];
        s[i]!='\0'
        }
    }
    puts(s);
    return 0;

 }

例如,字符串内容为:Hellollo World!,k的值为5,n的值为3,结果为Hello World!。

但是我这个程序最后输出Hello World!ld!
应该怎么改?
9 回复
#2
rjsp2023-05-24 23:24
s[i]!='\0';中 ! 是什么意思?
#3
apull2023-05-24 23:25
后面的字符前移之后要补'\0'到新字符串末尾。
#4
cheetah2023-05-26 07:48
别的不说,你这个程序能编译通过才怪,多了一个大括号
s[i]!='\0';感叹号去掉
#5
不会游泳的虾2023-05-29 11:41
修改如下,供参考:
程序代码:
#include <stdio.h>
#include <string.h>
#define N 80
int main()
{
    char s[N];
    int k, n, i;
    gets(s);
    scanf("%d%d", &k, &n);
    if (k + n > strlen(s))   //修改 如果 k+n 超过字符串长度
        n = strlen(s) - k;   //修改
    for (i = k; i < strlen(s) - n; i++)
    {
        s[i] = s[i + n];
    }
    s[i] = '\0';  //s[i]!='\0'; 修改
    puts(s);
    return 0;

 }


[此贴子已经被作者于2023-5-29 11:42编辑过]

#6
w的平方2023-05-31 23:31
回复 2楼 rjsp
我以为是让字符串s在第i处结束但是仅仅删去这个之后只会输出hello
#7
w的平方2023-05-31 23:32
回复 4楼 cheetah
不好意思copy的时候一不小心打多了,但是仅仅删去这个只会输出hello
#8
w的平方2023-05-31 23:35
回复 2楼 rjsp
可如果把是s[i]='\0'放出for循环又对了
#9
w的平方2023-05-31 23:38
不太懂s[i]='\0'和s[i]='\0'的含义?
#10
w的平方2023-05-31 23:47
突然懂了,感谢各位
1