c的合法标识符

又碰到字符串问题,经常在这上面出错,今天借这道题统一整理一下。

  • 字符串输入函数gets();
    gets()函数从标准输入(键盘)读入一行数据,所谓读取一行,就是遇到换行符就返回。gets()函数并不读取换行符’\n’,它会把换行符替换成空字符’\0’,作为c语言字符串结束的标志(与scanf不同的是,scanf()遇到空格就结束输入,后面的不算)。
  • 字符串输出函数puts();
    *puts()函数用来向标准输出设备(屏幕)输出字符串并换行。
    回到题目:

c的合法标识符_第1张图片代码如下:

#include
int main()
{
    int n,i,j;
    int flag;
    char a[50];
    scanf("%d",&n);
    getchar();
    while(n--){
  gets(a);
  flag=0;
  if((a[0]>=65&&a[0]<=90)||(a[0]>=97&&a[0]<=122)||a[0]=='_')
  {
   for(i=1;a[i]!='\0';i++)
   {
    if((a[i]>=65&&a[i]<=90)||(a[i]>=97&&a[i]<=122)||(a[i]>=48&&a[i]<=57)||a[i]=='_')
     flag=1;
    else{
     flag=-1;
     break;//这里注意遇到非法标识符结束,否则会被覆盖。
       }
   }
  }
   if(flag==1)
    printf("yes\n");
   else
    printf("no\n");
 }
    return 0;
}
  • 补充getchar()函数:
    当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
    字符串其他问题会继续探索。

你可能感兴趣的:(c语言)