使用指针处理字符串
定义数组和指针,将指针指向数组,通过对指针所存地址的增加,对数组赋值。
#include <stdio.h>//stdio.h has also defined the size_t & sizeof
int main(void)
{
char buffer[101];
char *pbuffer = buffer;
size_t index = 0;
for( ; index<sizeof(buffer) ; index++)
{
if((*(pbuffer+index) = getchar()) == '\n')
{
//replace '\n' by '\0' at the end of the string
*(pbuffer+index) = '\0';
printf("%s\n",buffer);
break;
}
}
if((index == sizeof(buffer))&&(*(pbuffer+index)!='\0'))
{
printf("You ran out of space in the buffer.\nf");
return 1;
}
//while((*pbuffer++ = getchar())!='\n');
//*(--pbuffer)='\0';
return 0;
}
#include <stdio.h>
int main(void)
{
const size_t BUFFER_LEN = 512;
int i=0;
char buffer[BUFFER_LEN];
char *pS[3] = {NULL};
char *pbuffer = buffer;
size_t index = 0;
printf("Enter 3 messages that total less than %u characters.\n",
BUFFER_LEN-2);
//read the strings from the keyboard
for(;i<3;i++)
{
printf("Enter %s message:\n",i>0?"another":"a");
pS[i]=&buffer[index];//save start of string
//read up to the end of buffer if necessary
for(;index<BUFFER_LEN;index++)//if you read \n
if((*(pbuffer+index)=getchar())=='\n')
{
*(pbuffer+index++)='\0';
break;
}
//check for buffer capacity exceeded
if((index == BUFFER_LEN)&&((*(pbuffer+index-1)!='\0')||(i<2)))
{
printf("\nYou ran out of space in the buffer.");
return 1;
}
}
printf("\nThe strings you entered are:\n\n");
for(i=0;i<3;i++)
printf("%s\n",pS[i]);
printf("The buffer has %d characters unused.\n",
BUFFER_LEN-index);
return 0;
}
评论