当前位置:首页 » 编程语言 » c语言怎么看是不是合法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言怎么看是不是合法

发布时间: 2023-02-12 02:29:34

❶ 怎样检查c语言输入数据的合法性

1.
通过scanf函数的返回值来验证输入的合法性。
2.
scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。

遇空格、“回车”、“跳格”键。

遇宽度结束。

遇非法输入。
3.
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
如:
scanf("%d
%d",&a,&b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end
of
file,返回值为EOF。
且返回值为int型.

❷ 判断是否为C语言的合法标识符

这不是小问题啊……你这个问题很大啊……

#include<stdio.h>
#include<string.h>
intmain()
{
charstr[1000][80];
inti,j,k,n,flag=1,len;
scanf("%d",&n);
for(j=0;j<n;j++)
{
/*不要k循环。80代表字符串的最长长度,但是字符串也可能不到80个字符,所以不应该一个个字符的读入,而且%s代表读入一整个字符串而不是一个字符。所以应该读入到str[j]里。前面不用&号因为str[j]已经是地址了。*/
scanf("%s",str[j]);
}
/*我帮你调了缩进,你看一下是不是清晰了很多……最内层的else如果print0之后break,后面还会print1。这是最大的问题*/
/*我们用一个flag变量代表当前字符串是否合法。1代表合法,0不合法,最后统一输出即可。*/
for(j=0;j<n;j++)
{
k=0;
flag=1;
if(str[j][k]==95||str[j][k]>64&&str[j][k]<91||str[j][k]>96&&str[j][k]<123)
{
/*我们不知道字符串有多长。所以k<80不行。*/
len=strlen(str[j]);
for(k=1;k<len;k++)
{
if(str[j][k]==95||str[j][k]>64&&str[j][k]<91||str[j][k]>96&&str[j][k]<123||str[j][k]>47&&str[j][k]<58)
continue;
else
{
flag=0;
break;
}
}
}
else
flag=0;
printf("%d ",flag);
}
return0;
}

最后再补充几点,

  1. 不用统一输入统一输出。输入一个字符串,处理,输出,再输入下一个即可。

  2. || && 一起用的时候加括号,避免潜在的逻辑错误

  3. 用'A'来取A字符的ascii码。你就不用去查表了。而且就算你要直接用ascii值,str[j][k]>=48也比str[j][k]>47可读性大很多。

    所以你这里完全可以写成

    str[j][k]>='A'&&str[j][k]<='Z'

❸ c语言中怎么判断一个转义字符是合法的

转义字符就那么多
分为两类
一个是固定字母的 比如 \t \n
这个就只能背了 没什么办法

另一类就是通用的,包括8进制 16进制
8进制的 \ooo 后面的ooo是1到3个合法的8进制字符。

16进制 \xhh 后面的hh是1到2个合法的16进制字符。

符合以上的 就是合法的。 否则非法。

❹ c语言中,怎么判断常量是否合法

整型分前缀(0、0x)和后缀(u、l),每种进制中用的数字不同;

浮点数后缀f、l,指数表示注意是否在范围内;

字符与字符串主要注意转义字符后面是否合法;

a:整数中不允许出现逗号;

b:科学计数法表示1.5乘以10的2.0次方,由于科学计数法指数部分只能是整数。

c:\号是转义符号后面要跟其他符号来表示具体字符,这里什么都没跟就写反引号了;

d:字符串常量是连续的2个字符,第1个字符的ascii码是7,第2个字符的ascii码是0作为字符串结束符号,第1个字符是响铃符号,输出时会让默认扬声器发出声音。

(4)c语言怎么看是不是合法扩展阅读:

字符串常量是用双引号括起来的字符序列。

字符常量可以赋值给字符变量,例如"charB='a';"您不能将字符串常量分配给字符变量,也不能将字符串常量分配给这两个变量!

例如,下面是一个有效的字符串常量:

"Howdoyoudo.","CHINA","a","$123.45","C语言编程","an","#123",""等等是字符串常量

存储:字符串中的字符依次存储在连续的内存区域中,并且null字符'\0'会自动附加到字符串的末尾作为字符串的结尾。因此,一个n个字符的字符串应该在内存中占(n+1)个字节。

❺ c语言 输入一个字符串,判断其是否是C的合法标识符。

1、使用中文当标识符,其前提是编译器支持中文当标识符,C++11之后,通用字符名覆盖到了汉字。

2、使用中文作为标识符时,其头文件与原来一样。

3、程序中的名字空间,保持不变。

4、可以将保留字定义为中文,用define定义。

5、可以用类型名,直接定义中文的变量名。

6、中文标识符的使用,和普通标识符一样。

❻ c语言怎么判断常量合不合法

法律分析:只能是A-Z,a-z,0-9与下划线组成(也就是说空格或其他字符都不能有)。不能以数字开头

法律依据:《C语言程序设计》 第二章 常量 2e32.6 -e-5 "/045" 'BASIC' 0fc 0x4d00 e5 ‘\' 变量 int _auto_ auto 2-or Turbo_C _169 常量里面 我知道1,4,5,8不合法... 常量

2e32.6 -e-5 "/045" 'BASIC'

0fc 0x4d00 e5 ‘\'

变量

int _auto_ auto 2-or

Turbo_C _169

❼ c语言如何判断实型数据是否合法

通过scanf
先把数据读成字符串
然后 判断字符串中是否只有数字
如果存在+-号,只能是第一个
如果存在小数点,只能有一个

符合以上三条的,是合法的。 否则是非法的。

❽ c语言判断是否合法的标识符.

c++里面的标识符是以字母或下滑线打头,后面加上任意数字,字母,下划线.ff
ai_2里面有个空格,所以不是标识符.
画个有限状态自动机就很清楚了
比如s代表开始状态,s1代表标识符首字合法状态,es代表输入合法,ef代表输入非法.a代表字母或下滑线,
b代表任意数字,字母,下划线,e代表结束符,那么自动机如下
s下输入字符属于a的话进入s1,否则经入ef;
s1下输入字符属于a或b,进入es,否则进入ef
es下输入字符属于a或b,进入es,否则进入ef
ef下输入结束符号,进入最终状态,并且得到输入的不是标识符
es下输入结束符号,进入最终状态,并且得到输入的是标识符

❾ C语言中如何判断是不是合法转义字符

''是八进制的转移字符,如果看到:87这就是非法的,'x'表示十六进制,还有一些必备的如:' ',' '这些。

和普通的字符判断相同,比如判断和'a'是否相同,ch=='a',那么判断转义一样,如ch==' ',逻辑表达式的结果只有两个,true和false,所有的逻辑表达式都一样,为真就是true,否则就是false。

#include<stdio.h>

int main(){

char a[20]="abc'efgh";

int i=0;

for(i=0;i<20;i++){

if(a[i]=='\'&&a[i+1]==''')

printf("true,%d",i);

if(a[i]==''')

printf("false");

if(a[i]==0){

printf("%d",i);

break;

数据类型关键字

short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)

long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)

long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)

signed:修饰整型数据,有符号数据类型。(C89标准新增)

unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)

restrict:用于限定和约束指针,并表明指针是访问一个数据对象的初始且唯一的方式。(C99标准新增)

复杂类型关键字

struct:结构体声明。(K&R时期引入)

union:联合体声明。(K&R时期引入)

enum:枚举声明。(C89标准新增)

typedef:声明类型别名。(K&R时期引入)

sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)

inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)