mình có một đoạn code như thế này
#include<stdio.h>
char *getFirstPt(char target, char *str[]);
int main(){
char *str[100];
char target;
int d;
scanf("%s\n",*str);
scanf("%c",&target);
printf("%s",*getFirstPt(target,str));
return 0;
}
char *getFirstPt(char target, char *str[]){
char p[100];
int i,j;
*str = &p[0];
for(i=0; *str[i] != '\0';i++){
if(*str == &target){
return *str;
break;
}
}
}
đoạn code này là nhập một dãy dữ liệu bất kỳ (1) từ bàn phím, sau đó nhập một ký tự bất kỳ(2). đoạn code trên sẽ tìm trong dãy dữ liệu bất kỳ(1) ký tự bất kỳ (2) và in ra màn hình đoạn ký tự (3) tính từ vị trí của ký tự (2) tới hết đoạn dữ liệu (1)
VD:
(1) ancdfljsadlkfjlw
(2) d
(3) dfljsadlkfjlw
cách hoạt động của nó đại khái là như thế nhưng khi mình dịch để chạy thử thì nó xuất hiện lỗi sau
gcc kadai6.c
kadai6.c: In function ‘main’:
kadai6.c:13:12: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
printf("%s",*getFirstPt(target,str));
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%d
mình không thể hiểu được vì str mình định dạng nó là char, vậy thì sao nó cứ bắt mình đổi lại là %d ???
dĩ nhiên là mình có thử đổi sang %d và dịch thử thì ngạc nhiên là nó dịch được nhưng khi chạy thử thì sau khi mình nhập hai giá trị “str” và “target” thì nó báo " core dumped"
./a.out
alsdkjflsdjlf
d
Segmentation fault (core dumped)
ai đó có thể giải thích cho mình với được không???