求分析代码错误
#include<stdio.h>
void reverseword(char *str);
int strlen(const char *str);
int strlen(const char *str){
int len=0;
while(*str!='\0'){
len++;
str++;
}
return len;
}
void reverseword(char *str){
char *s=str+strlen(str)-1;
while(str<s){
char c=*str;
*str=*s;//Access Violation
*s=c;
str++;
s--;
}
}
int main(){
char *str="I am a student!";
printf("%s\n",str);
printf("字符串的长度是:%d\n",strlen(str));
reverseword(str);
return 0;
}
[解决办法]
char *str="I am a student!";这个字符串是常量,不能修改,可以改成:char str[] = "I am a student!";
[解决办法]
非法访问内存
只因为你这样第定义了
char *str="I am a student!";
str指向一个字符串常量
无法被修改
char str[]="I am a student!";
这样就行了