C语言指针问题,高手请指点!!
从键盘输入一个字符串,和一个字符,使用指针,将字符串中,这个字符出现的地方全部删除。比如:输入的串为AABBCCDDEE,输入的字符是CC输出的结果应该是:AABBDDE...
从键盘输入一个字符串,和一个字符,使用指针,将字符串中,这个字符出现的地方全部删除。比如:
输入的串为 AABBCCDDEE ,输入的字符是CC
输出的结果应该是:AABBDDEE
具体代码是什么样的? 展开
输入的串为 AABBCCDDEE ,输入的字符是CC
输出的结果应该是:AABBDDEE
具体代码是什么样的? 展开
5个回答
展开全部
/*
从键盘输入一个字符串,和一个字符,使用指针,将字符串中,这个字符出现的地方全部删除。比如:
输入的串为 AABBCCDDEE ,输入的字符是CC
输出的结果应该是:AABBDDEE
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char OldStr[1024];
char DelStr[1024];
memset(OldStr,0x0,sizeof(OldStr));
printf("输入原始字符串 = ");
scanf("%s",OldStr);
memset(DelStr,0x0,sizeof(DelStr));
printf("输入要删除的字符串 = ");
scanf("%s",DelStr);
printf("要从字符串[%s]中删除[%s]...\n",OldStr,DelStr);
//先找到要删除字符串在原始字符串中的位置
char *pWork = OldStr;
bool HadFound = false;
while ( pWork < OldStr + strlen(OldStr) )
{
if ( strncmp(pWork,DelStr,strlen(DelStr)) == 0 )
{
HadFound = true;
break;
}
pWork++;
}
//原始字符串中存在要删除的字符串,位置为pWork
if ( HadFound )
{
memmove(pWork,pWork+strlen(DelStr),strlen(pWork)-strlen(DelStr)+1);
}
printf("删除后的结果为[%s]\n",OldStr);
fflush(stdin);
getchar();
return 0;
}
从键盘输入一个字符串,和一个字符,使用指针,将字符串中,这个字符出现的地方全部删除。比如:
输入的串为 AABBCCDDEE ,输入的字符是CC
输出的结果应该是:AABBDDEE
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char OldStr[1024];
char DelStr[1024];
memset(OldStr,0x0,sizeof(OldStr));
printf("输入原始字符串 = ");
scanf("%s",OldStr);
memset(DelStr,0x0,sizeof(DelStr));
printf("输入要删除的字符串 = ");
scanf("%s",DelStr);
printf("要从字符串[%s]中删除[%s]...\n",OldStr,DelStr);
//先找到要删除字符串在原始字符串中的位置
char *pWork = OldStr;
bool HadFound = false;
while ( pWork < OldStr + strlen(OldStr) )
{
if ( strncmp(pWork,DelStr,strlen(DelStr)) == 0 )
{
HadFound = true;
break;
}
pWork++;
}
//原始字符串中存在要删除的字符串,位置为pWork
if ( HadFound )
{
memmove(pWork,pWork+strlen(DelStr),strlen(pWork)-strlen(DelStr)+1);
}
printf("删除后的结果为[%s]\n",OldStr);
fflush(stdin);
getchar();
return 0;
}
展开全部
#include<stdio.h>
#define MAX 100
我们不用指针,用数组下标操作:
int main()
{
char str[MAX], ch;
int i, k;
scanf("%s", str); // 获得字符串str
while((ch = getchar()) == ' ' || ch == '\n' || ch == '\t'); // 跳过空白字符,获得所要的字符ch
for(k = i = 0; str[i]; ++i){ // 该循环删除str中ch字符
if(str[i] != ch) // 你可以画个图看看什么意思、
str[k++] = str[i];
}
str[k] = '\0'; // 在str尾添加 '\0'
printf("%s\n",str); // 输出
return 0;
}
好吧,我们用指针实现它,和上面的算法是一样的,表示不一样而已:
int main()
{
char str[MAX], ch, *p, *q;
scanf("%s", str);
while((ch = getchar()) == ' ' || ch == '\n' || ch == '\t');
for(p = q = str; *p; ++p){
if(*p != ch)
*q++ = *p;
}
*q = '\0';
printf("%s\n",str);
return 0;
}
数组下标操作和,指针操作,可以互相转化,你琢磨一下吧、有疑问,再问、~~~
#define MAX 100
我们不用指针,用数组下标操作:
int main()
{
char str[MAX], ch;
int i, k;
scanf("%s", str); // 获得字符串str
while((ch = getchar()) == ' ' || ch == '\n' || ch == '\t'); // 跳过空白字符,获得所要的字符ch
for(k = i = 0; str[i]; ++i){ // 该循环删除str中ch字符
if(str[i] != ch) // 你可以画个图看看什么意思、
str[k++] = str[i];
}
str[k] = '\0'; // 在str尾添加 '\0'
printf("%s\n",str); // 输出
return 0;
}
好吧,我们用指针实现它,和上面的算法是一样的,表示不一样而已:
int main()
{
char str[MAX], ch, *p, *q;
scanf("%s", str);
while((ch = getchar()) == ' ' || ch == '\n' || ch == '\t');
for(p = q = str; *p; ++p){
if(*p != ch)
*q++ = *p;
}
*q = '\0';
printf("%s\n",str);
return 0;
}
数组下标操作和,指针操作,可以互相转化,你琢磨一下吧、有疑问,再问、~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/* 从键盘输入一个字符串,和一个字符,使用指针,将字符串中,这个字符出现的地方全部删除。比如:
输入的串为 AABBCCDDEE ,输入的字符是C
输出的结果应该是:AABBDDEE */
#include <stdio.h>
#include <string.h>
main()
{
void delfunction(char *str,char ch,int n);
char old_str[100],del_char;
int i,number;
printf("输入原始字符串:\n");
scanf("%s",old_str);
getchar();
printf("输入要删除的字符:\n");
del_char=getchar();
number=strlen(old_str);
delfunction(old_str,del_char,number);
printf("输出删除后的字符串:\n");
for(i=0;i<number;i++)
{
if(old_str[i]!=' ')
printf("%c",old_str[i]);
}
printf("\n");
}
void delfunction(char *str,char ch,int n)
{
int j;
for(j=0; j<n;j++)
{
if(*str==ch)
*str=' ';
str++;
}
}
输入的串为 AABBCCDDEE ,输入的字符是C
输出的结果应该是:AABBDDEE */
#include <stdio.h>
#include <string.h>
main()
{
void delfunction(char *str,char ch,int n);
char old_str[100],del_char;
int i,number;
printf("输入原始字符串:\n");
scanf("%s",old_str);
getchar();
printf("输入要删除的字符:\n");
del_char=getchar();
number=strlen(old_str);
delfunction(old_str,del_char,number);
printf("输出删除后的字符串:\n");
for(i=0;i<number;i++)
{
if(old_str[i]!=' ')
printf("%c",old_str[i]);
}
printf("\n");
}
void delfunction(char *str,char ch,int n)
{
int j;
for(j=0; j<n;j++)
{
if(*str==ch)
*str=' ';
str++;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-05-04
展开全部
#include <stdio.h>
int main()
{
int value[6],*p,high=0,low=0,average=0,i;
p = value;
for(i=0; i<6; i++)
{
scanf("%d",p);
if(i==0)
high=low=*p;
else
{
if(*p > high)
high = *p;
if(*p < low)
low = *p ;
}
average+=*p;
p++;
}
average/=6;
printf("high:%d low:%d average:%d\n",high,low,average);
}
另外,站长团上有产品团购,便宜有保证
int main()
{
int value[6],*p,high=0,low=0,average=0,i;
p = value;
for(i=0; i<6; i++)
{
scanf("%d",p);
if(i==0)
high=low=*p;
else
{
if(*p > high)
high = *p;
if(*p < low)
low = *p ;
}
average+=*p;
p++;
}
average/=6;
printf("high:%d low:%d average:%d\n",high,low,average);
}
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询