-2
編譯時出現錯誤。爲什麼這段代碼從'char'錯誤獲得'char *'賦值?
incompatible integer to pointer conversion assigning to 'string'
(aka 'char *') from 'char'; take the address with &
我的代碼:
#include<stdio.h>
#include<cs50.h>
#include<string.h>
int pallin(string A);
int main(void)
{
printf("Enter the string to analyze\n");
string S[10];
S = GetString();
int flag = pallin(S);
if(flag == 0)
{
printf("Invalid input\n");
}
else if (flag == 1)
{
printf("Yes, the input is a pallindrome\n");
}
else{
printf("The input is not a pallindrome\n");
}
}
int pallin(string A)
{
int flag;
int n = strlen(A);
if(n<=1)
{
return 0;
}
else
{string B[10];int i = 0;
while(A[i]!="\0")
{
B[i]=A[n-i-1]; //Getting error here.
i++;
}
for(int j = 0; j < n; j++)
{
if(B[j]!=A[j])
{
flag = 2;
}
else
{
flag = 1;
}
}
return flag;
}
}
使用'char * S'而不是'char S [10]'。我找不到'GetString()'函數。在你的代碼中,'S'是一個數組。你不能給數組賦值,你能嗎? – babon
@babon:[tag:cs50]標籤wiki有關於''頭文件和特徵函數(如GetString()'和(horrid)'string' typedef)的信息。 –
'GetString'返回一個'string'('char *')。你正在分配給一個由10個字符串組成的'S'。這不是一個有效的任務。 'S [0]'會起作用。定義'string S = GetString();'也可以。 'pallin()'中也有類似的混淆。請注意,「迴文」只有一個字母。 –