来看两道题
19.
#include<stdio.h>
void delchar(char *str, char c);
int main()
{
char c;
char str[100];
int repeat, i;
scanf("%d", &repeat);
getchar();
for(i = 0; i < repeat; i++)
{
gets(str);
scanf("%c", &c);
getchar();
delchar(str,c);
}
return 0;
}
void delchar(char *str, char c)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
{
if(str[i]!=c)
{
str[j]=str[i];
j++;
}
}
str[j]='\0';
printf("result: ");
puts(str);
}
20.
#include <stdio.h>
void strmcpy(char *,char *,int);
int main()
{
int i,j,repeat,m;
char t[50],s[50];
scanf("%d", &repeat);
getchar();
for(i=0;i<repeat;i++)
{
gets(t);
scanf("%d", &m);
getchar();
strmcpy(s,t,m);
// printf("\n");
}
return 0;
}
void strmcpy(char *s,char *t,int m)
{
int i,j=0;
for(i=0;t[i]!='\0';i++)
{
if(i>=m-1)
s[j++]=t[i];
}
s[j]='\0';
if(i<m-1)
printf("error input");
else
puts(s);
}
在scanf后面的getchar()起到了关键作用,答案正确与否都在于此,以此警醒,留以细品。
另外,
for(i=j=0;str[i]!=’\0’;i++)
{
if(str[i]!=c)
{
str[j]=str[i];
j++;
}
也可细品,不妨为一种思路。