循环打印应该通过(C)

Ful*_*ard 0 c loops list

我试图从链表中打印唯一的文件,基本上我有一个char*检查我与当前文件进行比较,如果它不同,那么我将指针更改为新文件并打印出来,我有5个实例在2个唯一文件,但是当我运行循环时,它打印出5个文件(1个文件两次,另一个文件3次),而不是只打印每个文件一次,我该如何解决这个问题?

for (ptr = head; ptr != NULL; ptr = ptr->next){
    if(ptr->fileName != check){
        check = ptr->fileName;
        printf("%s\n", check);
    } 
    else{
        continue;
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*ter 5

在C中,你做不到if ( str1 != str2 ).你必须使用这些strcmp()功能.

代替

if(ptr->fileName != check){
Run Code Online (Sandbox Code Playgroud)

你将会拥有

if ( strcmp(ptr->fileName, check) != 0 ) {
Run Code Online (Sandbox Code Playgroud)

strcmp 如果字符串相等则返回0,并且-1或1取决于str1或str2是否大于另一个.

  • 那么你可以做str1!= str2它只是不做你的想法.它的作用是查看两个指针是否指向相同的内存位置,而不是它们指向相同的字符串 (2认同)