2015-09-05 427 views
1

我剛剛創建了一個程序,它會在緩衝區中找到一個命令。問題是我在代碼開始時立即收到分段錯誤。我甚至在main的開頭嘗試了打印語句,但它仍然沒有顯示任何內容。分割錯誤

#include <stdio.h> 
#include <stdlib.h> 

void convertToUpperCase(char str[], int _size) 
{ 
    int i = 0; 
    while(i < _size) 
    { 
     str[i] = toupper(str[i]); 
     i++; 
    } 
} 

int CheckText(char command[], 
       char buffer[], 
       int starting_point, 
       int size_of_buffer, 
       int size_of_command) 
{ 
    printf("%s", buffer); 
    size_of_command--; 
    convertToUpperCase(buffer, size_of_buffer); 
    convertToUpperCase(command, size_of_command); 

    int i = 0; 
    int r = 0; 
    while(i < size_of_command) 
    { 
     if(buffer[i+starting_point] == command[i]) 
     { 
     r++; 
     printf("%d", r); 
     } 
     i++; 
    } 

    int flag = 0; 
    if(r == size_of_command) 
    { 
     flag = 1; 
    } 

    return flag; 
} 

int main() 
{ 
    char h[40] = "hello"; 
    int fla; 
    printf("hey1"); 
    fla=CheckText("hello", h,0,40,6); 
    if(fla == 1) 
    { 
     printf("command recognized "); 
    } 
    //printf("%s\n", h); 

    return 0; 
} 
+0

調試器說什麼?也請重新格式化並重新加載代碼以使其更易於閱讀。 –

+3

'CheckText(「hello」,h,0,40,6);'注意不能更改的字符串字面值。 – BLUEPIXY

回答

0

正如通過@BLUEPIXY,使用

CheckText("hello", h,0,40,6); 

CheckText修改自"hello"放置在碼的只讀部分它的參數導致未定義的行爲指出。使用類似於:

char h[40] = "hello"; 
char h2[40] = "hello"; 
int fla; 
printf("hey1"); 
fla=CheckText(h2, h,0,40,6);