0

好的,所以我正在用 c 编程并想检查字符串是否改变了,所以起初我这样做了:

 if(strcmp (ax,result)!=0){
    result=ax;
        xil_printf(result);
        xil_printf("detected");
}
    }

它只检测到 1 次,然后我发现我正在使 2 个指针相等,所以即使 ax 的先锋改变了也会发生结果,因为它们现在都指向同一个东西,但我不希望我只想要将结果的数据更改为等于 ax 的 ppointee 的数据,因为字符串 ax 稍后会在代码中更改,因此我可以检测到它何时发生。所以我尝试了这个:

if(strcmp (ax,result)!=0){
    *result=*ax;
        xil_printf(result);
        xil_printf("detected");
}
    }

结果出现错误,无论如何如何做我想做的事情,我使结果数据等于 ax 但它们指向的不是同一件事:所以如果

ax-->"hello"  adrress: 232
result-->"frog"  adrress: 415

我检测到它们是不同的,然后我这样做:

ax-->"hello"  adrress: 232
result-->"hello"  adrress: 415

但不喜欢这样!:

ax-->"hello"  adrress: 232
result-->"hello"  adrress: 232   <--(they point at same thing which happens when i say result=ax)

那么有什么想法吗?

4

1 回答 1

1

你需要做strcpy(result, ax);

唯一的问题是,您需要确保 result 有足够的空间来存储 ax 中的内容

所以你的代码将是

if(strcmp(ax,result) != 0){   // result is different from ax
     strcpy(result, ax);      // copy ax to result
     xil_printf(result);
     xil_printf("detected");
}      
于 2013-04-02T22:33:12.483 回答