-1
我已經寫了一個程序在C編譯它在gcc中時降低字符串,它運行時崩潰。 但是在MSVC程序中運行平穩。相同的程序GCC崩潰,但msvc工作
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *strlower(char *s){
for (; *s; ++s) *s = tolower(*s);
return (char *)s;
}
int main(){
char *c = "HELLO";
strlower(c);
printf("%s",c);
return 0;
}
如果變量c
是數組,那麼程序在兩個編譯器中都起作用。在gcc中使用指針時爲什麼不工作?
修改字符串字面給人不確定的行爲。當行爲未定義時,允許發生任何事情,包括來自不同編譯器的不同行爲。這兩個編譯器都是正確的。 – Peter