编辑:显然我必须在 pigLatin 方法的开头声明 char *first 并稍后在该方法中将其初始化为 &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): 错误 C2143: 语法错误: 缺少';' 在“类型”之前
1>programone.c(25): 错误 C2065: 'first' : 未声明的标识符
1>programone.c(25): 错误 C2100: 非法间接
========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========
我不明白为什么指向数组“hello”的第一个字符的指针没有正确打印。
提前致谢 !