문자열 의 빈 칸 삭제
#include <stdio.h>
int is_blank( int ch );
void deblank( char string[] );
int main()
{
char string[] = " zhang lei g";
printf( "%s
", string );
deblank( string );
printf( "%s
", string);
return 0;
}
void deblank( char string[])
{
char *str_temp = string;
char *str_src = string;
int IS_last_blank = 0;
#if 0
while( *str_src != '\0' )
{
if( is_blank(*str_src) == 0 )
{
strtemp++;
IS_last_blank = 0;
}
else
{
if( !is_last_blank )
{
*strtemp++ = ' ';
is_last_blank = 1;
}
}
str_src++;
}
#endif
while ( *str_src != '\0' )
{
if( is_blank(*str_src) )
{
if( !IS_last_blank )
{
*str_temp++ = ' ';
IS_last_blank = 1;
}
}
else
{
*str_temp++ = *str_src;
IS_last_blank = 0;
}
str_src++;
}
*str_temp = '\0';
}
int is_blank( int ch )
{
return ch == ' ' || ch == '\r' || ch == '\v' || ch == '\t' || ch == '
' || ch == '\f' ;
}
C 와 포인터 의 답 은 다음 과 같다.
/*
** Shrink runs of white space in the given string to a single space.
*/
#define NUL
’\0’
void
deblank( char *string )
{
char
*dest;
char
*src;
int
ch;
/*
** Set source and destination pointers to beginning of the string, then
** move to 2nd character in string.
*/
src = string;
dest = string++;
/*
** Examine each character from the source string.
*/
while( (ch = *src++) != NUL ){
if( is_white( ch ) ){
/*
** We found white space. If we’re at the beginning of
** the string OR the previous char in the dest is not
** white space, store a blank.
*/
if( src == string || !is_white( dest[–1] ) )
*dest++ = ’ ’;
}
else {
/*
** Not white space: just store it.
*/
*dest++ = ch;
}
}
*dest = NUL;
}
int
is_white( int ch )
{
return ch == ’ ’ || ch == ’\t’ || ch == ’\v’ || ch == ’\f’ || ch == ’
’|| ch == ’\r’;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.