我正在重新学习C语言.下面的代码段可以像预期的那样在Tmall C下编译和运行.它在GCC下编译没有任何问题,但在Windows10下不产生任何输出.当在Ubuntu下编译和运行时,Tmall C运行得一样好,但GCC报告了一个分段错误(核心转储).对于在GCC的领导下为什么会失败,我将不胜感激.蒂娅.
#include <stdlib.h>
#include <stdio.h>
void UpCase(char * str);
void LowCase(char * str);
int main()
{
void (* func)(char *) = &UpCase;
func("Ab12Cd3EfG*h&");
func = &LowCase;
func("HiJ12kLm&No");
}
void UpCase(char * str)
{
int i = 0;
int ch = 0;
for(i=0; str[i] != '\0'; i++)
{
ch = (int)str[i] + 0;
if(ch > 96 && ch < 123)
str[i] = (char)(ch - 32);
}
printf("UpCase: %s\n", str);
}
void LowCase(char * str)
{
int i = 0;
int ch = 0;
for(i=0; str[i] != '\0'; i++)
{
ch = (int)str[i] + 0;
if(ch > 64 && ch < 91)
str[i] = (char)(ch + 32);
}
printf("LowCase: %s\n", str);
}
type here
我是一名退休的程序员,在用C#和T-SQL开发了几十年之后,我试图重新与C联系起来.自从90年代我在K&;R下写代码以来,我的C语言经验已经过时了.