編輯:顯然我必須在pigLatin方法的開頭首先聲明char *,並在方法的後面將其初始化爲& word [counter]。任何人都知道這是爲什麼?我正在使用Visual Studio 2010.指向字符數組的第一個字符的指針?
我無法弄清楚爲什麼這會給我一個編譯時錯誤。有問題的代碼:
#include <stdio.h>
#include <string.h>
#include <conio.h>
char *pigLatin(char *word)
{
if (word[0] == 'a' || word[0] == 'e' || word[0] == 'i'
|| word[0] == 'o' || word[0] == 'u')
{
char yay[] = "yay";
strcat(word, yay);
return word;
}
else
{
int length = strlen(word);
int counter = 0;
char addOn[] = "";
char remainder[] = "";
char yay[] = "yay";
printf("%s", yay);
char *first = &word[counter];
printf("%c", *first); // error is here, don't know why it doesn't print
return word;
}
}
int main()
{
char hello[] = "hello";
pigLatin(hello);
printf("%s", hello);
getch();
return (0);
}
1> ------構建開始:項目:Program_One,配置:發行的Win32 ------
1> programone.c
1> programone.c(12):警告C4996:'strcat':此函數或變量可能不安全。考慮使用strcat_s代替。要禁用棄用,請使用_CRT_SECURE_NO_WARNINGS。詳細信息請參見在線幫助。
1> programone.c(24):error C2143:syntax error:missing';'之前的 'type'
1> programone.c(25):錯誤C2065:第一':未聲明的標識符
1> programone.c(25):錯誤C2100:非法間接
== ========構建:0成功,1失敗,0最新,0跳過==========
我不明白爲什麼我的指針爲第一個陣列「你好」的字符打印不正確。
在此先感謝!
如果你把警告級別上你的編譯器,你會發現,這將不會編譯(或至少應該得到警告消息)。 –
不應該是'&word [counter]'? – BeemerGuy
@OliCharlesworth:這就是我一直在得到的。具體的錯誤是: 1> programone.c(23):錯誤C2143:語法錯誤:缺少';' ''''之前'type' 1> programone.c(24):error C2065:'first':未聲明的標識符 1> programone.c(24):錯誤C2100:非法間接尋址 – kkSlider