2013-10-29 70 views
0

11: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char (*)[100]’ 这是我的错误....广东话修复它...错误的格式

#include <stdio.h> 
#include <string.h> 
int main() 
{ 
char *a; 
char *count; 
char str[100]; 
int i ; 
printf("\n:enter string for Palindrome test\t"); 
scanf("%s", &str); 
i= strlen(str); 
//a=(char *)malloc(i*sizeof(char)); 
a=&str[0]; 
count=&str[i-1]; 
while((*(a++)==*(count--)) && i>=1) 
{ i--; } 
if(i==0) { printf("\n%s is a palin",str);} 
else { printf("\n%s is not palin",str);} 

} 
+0

为什么我的代码不运行? –

+0

它运行良好。看到它[这里](http://ideone.com/ZxZQEE)。只需在关闭'}'的'main'之前添加'return 0;'。 – haccks

+0

不要相信你可以声明一个单一的符号作为回文... – Runium

回答

3

当然,你可以解决它。只是不要传错类型。变化:

scanf("%s", &str); 

要:

scanf("%s", str); 

,或等效:

scanf("%s", &str[0]); 
+0

谢谢...但我的代码不运行..大声笑什么错了? –

+1

不知道 - 你的调试器说什么? –

0

你不要总是用一个符号传递参数给scanf()的。如果格式字符串包含%c或%s,它将查找char *类型。当你用& str调用它时,你用一个char **类型或编译器所说的char * [100](一个指向100个字符数组的指针)调用它。

+1

'char **'和'char(*)[100]'不是同一类型。 –