新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
gets得到的是字符串,而字符串是以'\0'结尾的啦。
公司主营业务:成都做网站、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出永顺免费做网站回馈大家。
如:
char a[10];
gets(a);//你输入1234,则a里存储的内容是"1234\0",一共占了5个位置,不要忘了'\0'
gets(a);//这里你输入abc,则a存储的内容是"abc\0\0",看到没有两个\0了,而输出字符串,是遇到\0
//就结束的啦。如果你输入ab,则a存储的内容是"ab\04\0",你可以试着输出a[3],那么它会输出4,
//不信?你可以试一试啦
代码功能:
1、输入任意行数的内容(如果你想限制最多10行,自己加个变量计数好了)。
2、不想输入时,新行直接回车,会刷新显示统计个数。
#include stdio.h
#include stdlib.h
#include string.h
#include malloc.h
typedef struct strs
{
char str[100];
struct strs *next;
}STRS;
void contWord(char *str);//对字符串大小写字母计数
void intput(STRS **strsHead,STRS **strsTail);//输入字符串,并显示统计结果(每输入完一行回车时,刷新数据)
void prfStrs(STRS *strsHead,int tj);//打印字符串及统计结果
int dCon=0;//大写字母计数
int nCon=0;//数字计数
int main()
{
STRS *strsHead=(STRS *)malloc(sizeof(STRS));
strsHead-next=NULL;
STRS *strsTail=NULL;
intput(strsHead,strsTail);
return 0;
}
void prfStrs(STRS *strsHead,int tj)//tj=1输出统计结果;tj=0不输出统计结果
{
while(strsHead-next!=NULL)
{
printf("%s\n",strsHead-next-str);
strsHead=strsHead-next;
}
if(tj==1)
{
printf("大写字母个数:%d\n",dCon);
printf("数字输入个数:%d\n",nCon);
}
}
void contWord(char *str)
{
int len=strlen(str),i;
for(i=0;ilen;i++)
{
if(str[i]='A' str[i]='Z')
dCon++;
if(str[i]='0' str[i]='9')
nCon++;
}
}
void intput(STRS **strsHead,STRS **strsTail)
{
STRS *strsNew;
char c;
while(1)
{
strsNew=(STRS *)malloc(sizeof(STRS));
memset(strsNew-str,0,100);
if(strsNew-str[0]==0)
{
c=0;
c=getchar();
if(c=='\n')
{
system("cls");
prfStrs(*strsHead,1);
break;
}
else
{
strsNew-str[0]=c;
}
}
gets(strsNew-str[1]);
strsNew-next=NULL;
if((*strsHead)-next==NULL)
(*strsHead)-next=strsNew;
else
(*strsTail)-next=strsNew;
*strsTail=strsNew;
contWord(strsNew-str);
}
}
1、C语言中没有提供字符串替换函数,网上能找到的类似函数也只是能替换一个,不能替换全部,工作中却常常要用到这个功能,故实现一个函数。该函数所使用到的相关函数均是自己实现,没有调用库函数。
2、函数代码如下:
/*descript:replace str,返回一个替换以后的字符串,用完之后要free()
success:return 1
error:return 0
BUG:"select * from tab where id=':a' and name =':aa'",this is not support,this function is just simple str_replace ,not support all SQL language
*/
char *replacestr(char *strbuf, char *sstr, char *dstr)
{ char *p,*p1;
int len;
if ((strbuf == NULL)||(sstr == NULL)||(dstr == NULL))
return NULL;
p = strstr(strbuf, sstr); //返回字符串第一次出现的地址,否则返回NULL
if (p == NULL) /*not found*/
return NULL;
len = strlen(strbuf) + strlen(dstr) - strlen(sstr);
p1 = malloc(len);
bzero(p1, len);
strncpy(p1, strbuf, p-strbuf);
strcat(p1, dstr);
p += strlen(sstr);
strcat(p1, p);
return p1;
}