English 中文(简体)
strcmp () 没有比较
原标题:strcmp() not comparing

Hello everybody, I m a newbie and I m doing a code that the principal aim is to print a number if two strings are equal. First string is obtained from a file and the second one is the string to be compared with.

代码:

int main()
{
char *string[2];
FILE *stream;
stream = fopen("REL","r");
if( (stream = fopen("REL","r")) == NULL)
{  
    printf("Can t open %s
","REL");
    exit(1);
}
for(int i=0;i<92;i++)
{
    fscanf(stream,"%s",&string);
    if( strcmp("20", *string) == 0 )
    {
        printf("%d",20);
    }
}
fclose(stream);
}

当我在贝壳上做测试时, 它会加速我:

~/CM$ ./file2 
Segmentation fault (core dumped)

我可能犯了一个愚蠢的错误,但是,作为一个新人,我不明白剧本出了什么问题。

最佳回答

stringing 是一个2 char__/code> 的单位化阵列。 fscanf 正试图写到内存中不应该写的地方。 声明 string 是一个字符阵列:

char string[256];

并且:

fscanf(stream, "%255s", string); /* Limit number of
                                    chars read to prevent buffer overrun. */
问题回答

尝试此 :

char string[128];
fscanf(stream, "%s", string);

然后:

if (!strcmp("20", string)) {
    /* The strings are equals */
}




相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...