Strcmp将字符串变成乱码

问题描述 投票:0回答:1

我的代码在这里遇到了一个奇怪的问题。这段代码将命令行参数与结构数组中的字符串进行比较。本质上,该程序在命令行参数中查找重复项。这并不是很重要,因为该程序可以正常运行,但某些条件除外。

for(i = 0; i < argc; i++){
    for(p = argv, j = 0, n = 0; *p; p++, j++){
         if(strcmp(array[i].string, *p) == 0){
             array[i].dupIndex[n++] = j; // <<-- The culprit
         }
    }
}

[在运行文件的某些条件下,array [i] .string更改。似乎是以奇数方式进行的。例如,如果我在程序中这段代码之前和之后都有打印语句,它会以普通字符串的形式出现在前面,一旦到达((罪魁祸首)),它就会变成这样:(如果您不能看见)。很奇怪。当我将文件命名为与命令行中的字符串相同时,似乎正在发生。因此,例如,如果可执行文件运行为file,则file file file正常显示奇数,而第二个(偶数)不显示。它看起来像这样:(如果您看不见的话,请输入一个不敢相信的字符)有人知道为什么会这样吗?我知道这是我放置的代码行(([

c strcmp
1个回答
0
投票

@@ CherryDT,您说得对!这是一个超出范围的问题。只需确保n不会超出范围即可。

© www.soinside.com 2019 - 2024. All rights reserved.