我有一个关于字符串数组的问题。
我正在尝试找到一种方法来检查字符串中是否包含不需要的字符。
测试数组必须只包含这 8 个选项之一:{'A','a','C','c','G','g','T','t'}
在此检查过程之前删除所有空格。
如果我有两个数组 A = {AGctcgtacgtacg} B = {CGTAagctFcg}
A 应该通过测试,而 B 应该失败,因为其中有“F”。
我正在考虑使用 for 循环遍历数组的每个元素并尝试检查该字符是否是选项之一。
const char test[] = {'A','a','C','c','G','g','T','t'};
int l = strlen(A);
char A[] = {AGctcgtacgtacg}
char B[] = {CGTAagctFcg}
for (i = 0; i < l; i++){
if (A[i] is one of the characters in test){
do nothing... (keep checking)
}
else{
break;
printf("Error: the array contains unwanted character.");
exit(1);
}
}
最佳答案
您可以使用标准 C 函数 strspn
在 header 中声明 <string.h>
检查字符串是否仅包含有效字符。
例如
#include <stdio.h>
#include <string.h>
int main( void )
{
const char *test = "AaCcGgTt";
char A[] = "AGctcgtacgtacg";
char B[] = "CGTAagctFcg";
if (A[strspn(A, test)] == '\0')
{
puts("Array A has valid characters");
}
else
{
puts("Array A has invalid characters");
}
if (B[strspn(B, test)] == '\0')
{
puts("Array B has valid characters");
}
else
{
puts("Array B has invalid characters");
}
}
程序输出为
Array A has valid characters
Array B has invalid characters
如果您还需要知道第一个无效字符的位置,那么您可以这样写
#include <stdio.h>
#include <string.h>
int main()
{
const char *test = "AaCcGgTt";
char A[] = "AGctcgtacgtacg";
char B[] = "CGTAagctFcg";
size_t n;
if (A[n = strspn(A, test)] == '\0')
{
puts("Array A has valid characters");
}
else
{
puts("Array A has invalid characters");
printf("Invalid character is %c at position %zu\n", A[n], n);
}
if (B[n = strspn(B, test)] == '\0')
{
puts("Array B has valid characters");
}
else
{
puts("Array B has invalid characters");
printf("Invalid character is %c at position %zu\n", B[n], n);
}
}
程序输出为
Array A has valid characters
Array B has invalid characters
Invalid character is F at position 8
关于C - 如何检查不需要的字符是否在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562265/