簡體   English   中英

在 C 程序中使用帶有指針數組的 strcmp() function

[英]Using strcmp() function with pointer array in C program

我正在嘗試檢測指針數組中的重復字符串。 我想用 strcmp() function 檢測是否有任何重復,並想刪除除第一個重復之外的重復,但是當我添加strcmp() function: Segmentation fault (core dumped)時命令行給出錯誤

這是我的代碼; 並且大小等於產品數組的大小。

FILE* temp_file_to_read = fopen("temp.txt", "r");
char temp_line[256];  
char *products[256];
int j = 0;
        while(fgets(temp_line, sizeof(temp_line), temp_file_to_read)){
                //printf("%s", temp_line);
                products[j] = strdup(temp_line);
                printf("%s", products[j]);
                j++;
        }


         for(int i = 0; i< size; i++){
                    for(int j = i+1; j <  size; j++){
                            if(strcmp(products[i], products[j])==0){
                                    printf("%s is exist\n", products[j]);
                            }
                    }
            }

我猜你的文件沒有 256 個產品,每個產品的長度正好是 256 個字符,所以你的products數組不完整。 因此,當您執行strcmp(products[i], products[j])時,您有時會嘗試使用垃圾指針,就好像它們指向真正的字符串一樣,這就是您遇到段錯誤的地方。

您的代碼有幾處問題,包括

  • 您可能希望在新行中拆分文件,而不僅僅是每 256 個字符(盡管我可能是錯的)
  • 你應該檢查以確保你不要嘗試創建超過 256 個產品,否則你會溢出你的數組
  • 在進行字符串比較時,僅 go 就您擁有的產品數量而言,而不是盲目到數組的末尾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM