参数不能通过 if语句运行,我也不知道为什么。
在某些情况下,考虑到您对各大洲的预期寿命估算,该程序应该会给您“您还有几岁?” 。
输入的参数是:年龄,大陆和性别。当我执行它时,我要输入参数,然后它就停止工作了。
xcopy /d "%SystemDrive%\clfiles\*xp18.tap"
"\\nphdata\Departments\M.E\N1040_MACHINING\OFFICE\PROGRAM_HOLD
\MS_PROBE_MACROS" /y
ren \\nphdata\Departments\M.E\N1040_MACHINING\OFFICE\PROGRAM_HOLD\MS_PROBE_MACROS\*xp18.tap "M*.tap"
set Source="\\nphdata\Departments\M.E\N1040_MACHINING\OFFICE\PROGRAM_HOLD\MS_PROBE_MACROS"
for %%e in (%Source%\M*.tap) do (
set ProbeMacro=%%~ne
set ProbeMacro=!ProbeMacro:~0,8!%
del %Source%\!ProbeMacro!
ren "%%~e" "!ProbeMacro!"
)
答案 0 :(得分:0)
您要将整个字符串存储在仅分配了单个字符的内存中。这是“缓冲区溢出”,并导致未定义的行为。
不要将它们分配为单个字符(类型char
),而应尝试将它们分配为字符数组(例如unsigned char cont[128];
)。我还建议使用fgets()
进行字符串输入,而不是将scanf()
与说明符一起使用%s
。
此外,请勿使用cont == America
比较字符串。 strcmp()
函数是完成此任务的正确工具。
最后,您永远不会将在此使用的变量定义为常量(例如America
)。您需要定义America
(变量)(也许是"America"
),或者直接将cont
与要测试的字符串进行比较(再次可能是"America"
)< / p>
int main(void) {
const unsigned char *America="America";
unsigned char cont[128];
...
fgets(cont, 128, stdin);
...
if (strcmp(cont, America) == 0) {
...
}
...
}