我想在某些位置的陣列,以檢查某些字符。檢查陣列中的特定字符用C
數組始於$$$$則有八個字符,然後又$,八個字符,並與$$$$完成。例如char my_array[50] = "$$$$01FF4C68$02543EFE$$$$";
我要檢查那裏應該是$所有職位確實有他們。
我可能分裂數組包含的字符,然後分別測試他們,但有沒有這樣做的更好的辦法三個部分?
我想在某些位置的陣列,以檢查某些字符。檢查陣列中的特定字符用C
數組始於$$$$則有八個字符,然後又$,八個字符,並與$$$$完成。例如char my_array[50] = "$$$$01FF4C68$02543EFE$$$$";
我要檢查那裏應該是$所有職位確實有他們。
我可能分裂數組包含的字符,然後分別測試他們,但有沒有這樣做的更好的辦法三個部分?
爲什麼複雜的東西?
if (my_array[0] != '$'
|| my_array[1] != '$'
|| my_array[2] != '$'
|| my_array[3] != '$'
|| my_array[12] != '$'
|| my_array[21] != '$'
|| my_array[22] != '$'
|| my_array[23] != '$'
|| my_array[24] != '$')
{
printf("Wrong!\n");
}
是的,看起來不錯,謝謝 –
搞笑:) +1簡單! –
您可能需要使用strstr functinn找到$$$
....
使用strstr()
要檢查,如果數組有八個$開頭:strstr(my_array, "$$$$$$$$")
要檢查數組以八位結尾:strstr(my_array + 16, "$$$$$$$$")
+16在這裏移動指針,所以my_array + 16的開頭將是$的位置是s無可奈何。
看起來不錯,我會檢查一下。謝謝 –
是有,你可能想使用正則表達式,請仔細閱讀http://www.peope.net/old/regex.html
如果使用POSIX兼容的平臺以及一些更爲複雜的模式是你的代碼中出現,你可以去看看正則表達式,例如PCRE
你也可以儘量避免使用以來的strstr的格式很簡單,固定的;直到示例格式成立::
bool ok = strlen(my_array) >= 25 /* just be sure there are at least all expected chars */ &&
strncmp(my_array, "$$$$", 4) == 0 &&
strncmp(my_array + 12, "$", 1) == 0 /* my_array[12] == '$' */&&
strncmp(my_array + 21, "$$$$", 4) == 0;
不使用string.h
庫長選項,使3個測試:
#include <stdio.h>
int firstTest(char a[]);
int secondTest(char a[]);
int thirdTest(char a[]);
int main (void)
{
int result;
char my_array[50] = "$$$$01FF4C68$02543EFE$$$$";
if((firstTest(my_array) == 1) && (secondTest(my_array) == 1) && (thirdTest(my_array) == 1)){
printf("The string is valid.\n");
result = 1;
}
else{
printf("The string is invalid.\n");
result = 0;
}
return 0;
}
int firstTest(char a[])
{
int i;
for(i = 0; i < 4; i++){
if (a[i] != '$'){
return 0;
break;
}
return 1;
}
}
int secondTest(char a[])
{
if(my_array[12] != '$')
return 0;
else
return 1;
}
int thirdTest(char a[])
{
int i;
for(i = 21; i < 25; i++){
if (a[i] != '$'){
return 0;
break;
}
return 1;
}
}
sscanf的應該做的工作
char my_array[50] = "$$$$01FF4C68$02543EFE$$$$";
int n,m;
if(!sscanf(my_array,"$$$$%*8[0-9A-H]%n$%*8[0-9A-H]$$$$%n",&n,&m) && n==12 && m==25)
puts("ok");
else
puts("not ok");
像'strstr'? –
你使用什麼平臺? –
所以它總是''$$$$ + 8 +'$'+ 8 +''$$$$?如果是這樣,只需使用一個循環並跟蹤位置。 – netcoder