我有一個簡單的程序,其中有一個我在外部寫入的字符串(在這個snippit的情況下,它是用戶創建的)。我正在嘗試利用它的某些部分。將char *轉換爲大寫segfaults
我第一次用分隔符引起它,並試圖使用toupper函數來大寫它,但是我似乎正在得到segfaults。 Valgrind的運行提供任何錯誤,只是簡單地說:
Process terminating with default action of signal 11 (SIGSEGV)
==10180== Bad permissions for mapped region at address 0x4007B9
代碼:
int main(void) {
char * test;
char * f;
char * s;
char * p;
test = "first:second:third:fourth:";
f = strtok(test,":");
for(p = f; *p; *p = toupper(*p), p++); //segfaults
printf("f is %s \n",f); //this should print "FIRST" as it should be capitalized
return 0;
}
'f = s = p = test = malloc(sizeof(char *)* 10);'這是什麼? –
內存泄漏,內存大小不正確...太多... –
@SouravGhosh哇!我沒有看到!當我看到'test = strtok(STRING_LITERAL,...)'我立即回答。 –