تكرار الصفيف في ج
سؤال
كنت أتساءل عما إذا كان من الآمن القيام بالتكرار التالي للعثور على الحدوث الأول لـ STR داخل الصفيف أو إذا كانت هناك طريقة أفضل. شكرًا
#include <stdio.h>
#include <string.h>
const char * list[] = {"One","Two","Three","Four","Five"};
char *c(char * str) {
int i;
for (i = 0; i < 5; i++) {
if (strstr(str, list[i]) != NULL) return list[i];
}
return "Not Found";
}
int main() {
char str[] = "This is a simple string of hshhs wo a char";
printf("%s", c(str));
return 0;
}
المحلول
نعم ، إنه "آمن" بمعنى أن الكود أعلاه سوف يعمل وليس هناك طريقة سهلة لكسره.
ومع ذلك ، فإن القليل من الإصلاح سيكون أكثر قوة:
- يعود
const char*
من عندc()
بحيث لا يمكن للمتصل تعديل السلاسل الناتجة. كل تلك الأوتار ثابتة. - بدلا من الرقم السحري
5
, ، والتي ستصبح غير صالحة إذا تغير الصفيف ، استخدمsizeof(list)/sizeof(list[0])
لحساب عدد العناصر في القائمة.
لا تنتمي إلى StackOverflow