【发布时间】:2015-01-20 03:19:29
【问题描述】:
编辑:显然我必须在 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' : undeclared identifier
1>programone.c(25): 错误 C2100: 非法间接
========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========
我不明白为什么指向数组“hello”的第一个字符的指针没有正确打印。
提前致谢!
【问题讨论】:
-
如果您将编译器的警告级别调高,您应该会发现它无法编译(或者您至少应该收到警告消息)。
-
不应该是
&word[counter]? -
@OliCharlesworth:这就是我得到的。具体错误是: 1>programone.c(23): error C2143: syntax error : missing ';'在“类型”之前 1>programone.c(24):错误 C2065:“第一个”:未声明的标识符 1>programone.c(24):错误 C2100:非法间接
-
@BeemerGuy.net:我试过了,但仍然出现构建错误。
-
@kkSlider:真的吗? works for me