❶ 怎樣檢查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;
}
最後再補充幾點,
不用統一輸入統一輸出。輸入一個字元串,處理,輸出,再輸入下一個即可。
|| && 一起用的時候加括弧,避免潛在的邏輯錯誤
用'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語言中如何判斷是不是合法轉義字元
'