这道题错哪里啊老是提示内部异常或全局变量或主函数已存在文件中

这道题错哪里啊?老是提示内部错误或全局变量或主函数已存在文件中。
【习题6.110】系统给定外部字符数组变量s和数组长度n(不需要
自行定义)。main函数的功能是:把字符串s中所有小写字母转换
为大写字母,其他字符不变。例如,当s="68abcdEFGhijkLM86"
时,转换后s="68ABCDEFGHIJKLM86"。
请仅在空缺处填入合适内容,使其实现上述功能。
void main() 
{
  int i=0;
  n==strlen(s);
  while(i<n)
  {
  if(*(s+i)>='a' && *(s+i)<='z')
  *(s+i)=*(s+i)-32 ;
  i++ ;
  }
}

还有。跟头文件#include<sudio.h>是没有关系的。变量是系统已经给定了的。不用自己定义的。
另外,*(s+i)也就是s[i].

为什么老是提示内部错误或全局变量或主函数已存在文件中。


------解决方案--------------------
首先,这个是个笔试题,题目说变量系统已定义是假设它已定义的意思,并不是说这个变量确实是定义了,
所以不要直接把书上的代码直接拿来运行,肯定通不过的。变量S明显是没有定义的。

然后,*(s+i)就是s[i]的说法不完全对,*(s+i)是个指针(s+i)是这个指针的地址,不具体运算直接认定它就是s[i]的地址的说法是不对,可能内存溢出什么的,那地址就不是指向该数组值的地址了。

最后,请提高结贴率,偶犹豫了很久才决定打这么多字。

------解决方案--------------------
C/C++ code

void main()  
{
    char s[] = "adasd";
    int i=0;
    int n=strlen(s);
    while(i<n)
    {
        if(*(s+i)>='a' && *(s+i)<='z')
            *(s+i)=*(s+i)-32 ;
        i++ ;
    }
    printf("%s",s);
    system("pause");
}

------解决方案--------------------
探讨

引用:

C/C++ code

#include <stdio.h>
#include <string.h>
char s[10] = "gpshq";
int n;
int main()
{

int i=0;
n = strlen(s);
while(i < n)
{
if(*(s+i)>='a' &amp;amp;&amp;am……