标题:这个C语言程序执行的时候为什么莫名其妙终止
只看楼主
qyl235532
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-4-23
结帖率:66.67%
已结贴  问题点数:20 回复次数:11 
这个C语言程序执行的时候为什么莫名其妙终止
3.编写程序将用户从键盘上输入 的某个字符串中某个特定字符删除,字符串和要删除的特定字符都由用户输入,要求显示用户输入的字符串和删除字符后的字符串,例如:用户从键盘输入“I am a teacher“,要删除的字符为:'a',删除字符'a'后的字符串为“I m  techer”,该实验取名为实验4-3.c。

#include<stdio.h>
#include<string.h>
int main()
{
int i;
char str1[100],str2[100];
char c;
printf("输入字符串:\n");
scanf("%s",str1);
printf("所删除的字符为:\n");
scanf("%c",&c);
strcpy(str1,str2);
for(i=0;i<100;i++)
{if(str1[i]=='c')
for(i=i;i<99;i++)
str1[i]=str1[i+1];
}
printf("输入的字符串为:%s\n",str2[100]);
printf("删除所给字符后为:%s\n",str1[100]);
return 0;
}
搜索更多相关主题的帖子: 键盘 teacher 编写程序 include 
2013-04-23 21:57
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:2 
printf("输入的字符串为:%s\n",str2[100]);
printf("删除所给字符后为:%s\n",str1[100]);
你要确保str1,str2是个合法的字符数组,就是说要有'\0'作为结束标志,否则printf %s就要出问题了

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-04-23 22:02
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
得分:18 
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
int i, j;
char str1[100],str2[100];
char c;
printf("输入字符串:\n");
scanf("%s",str2);
getchar();
printf("所删除的字符为:\n");
scanf("%c",&c);
strcpy(str1,str2);
for(i=0;i<100;i++)
{if(str1[i]== c) {
    for(j=i;j<99;j++)
    str1[j]=str1[j+1];
    break;
}
}
printf("输入的字符串为:%s\n",str2);
printf("删除所给字符后为:%s\n",str1);
return 0;
}

仰望星空...........不忘初心!
2013-04-23 22:07
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
得分:0 
错误还慢多的..!

仰望星空...........不忘初心!
2013-04-23 22:07
小小的C
Rank: 2
等 级:论坛游民
帖 子:31
专家分:22
注 册:2013-4-19
得分:0 
字符串最好不要用scanf输入,应该是strcpy(str2,str1)俩次循环都用i,当内循环i=99时,接下来也会结束外循环所以只去掉一个c

新手发言,勿怪。
2013-04-23 22:14
qyl235532
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-4-23
得分:0 
回复 3楼 Susake
谢谢,用你的成功了
2013-04-24 10:34
qyl235532
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-4-23
得分:0 
以下是引用Susake在2013-4-23 22:07:24的发言:

#include<stdio.h>
#include<string.h>
int main()
{
int i, j;
char str1[100],str2[100];
char c;
printf("输入字符串:\n");
scanf("%s",str2);
getchar();
printf("所删除的字符为:\n");
scanf("%c",&c);
strcpy(str1,str2);
for(i=0;i<100;i++)
{if(str1== c) {
    for(j=i;j<99;j++)
    str1[j]=str1[j+1];
    break;
}
}
printf("输入的字符串为:%s\n",str2);
printf("删除所给字符后为:%s\n",str1);
return 0;
}

[quote]以下是引用Susake在2013-4-23 22:07:24的发言:

#include<stdio.h>
#include<string.h>
int main()
{
int i, j;
char str1[100],str2[100];
char c;
printf("输入字符串:\n");
scanf("%s",str2);
getchar();
printf("所删除的字符为:\n");
scanf("%c",&c);
strcpy(str1,str2);
for(i=0;i<100;i++)
{if(str1== c) {
    for(j=i;j<99;j++)
    str1[j]=str1[j+1];
    break;
}
}
printf("输入的字符串为:%s\n",str2);
printf("删除所给字符后为:%s\n",str1);
return 0;
}
2013-04-24 10:34
qyl235532
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-4-23
得分:0 
回复 5楼 小小的C
嗯,有道理
谢谢
2013-04-24 10:35
编程下忍
Rank: 1
来 自:西北工业大学
等 级:新手上路
帖 子:14
专家分:5
注 册:2013-4-23
得分:0 
回复 2楼 pauljames
好像还有小失误,break,结束了整个循环,所以只能删除一个字符,当有重复的字符时,就删不了了

爱编程,爱女人。
2013-04-24 14:19
编程下忍
Rank: 1
来 自:西北工业大学
等 级:新手上路
帖 子:14
专家分:5
注 册:2013-4-23
得分:0 
回复 3楼 Susake
还有点小失误,break ,结束了整个循环,当有重复字符时,就只能删最前面一个。

爱编程,爱女人。
2013-04-24 14:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405285-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.938434 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved