How to read the first three characters of a string?

3

I have an application in C. It already opens a text file and reads the entire line that the file has. It's a long line, for example: HTJxxxxxxxxxxxxxxxxxxxx ...

I can store this text file's contents in a variable.

But how do I read the first three characters only?

I need to read only the first three to create a condition that compares them with other values.

In Javascript it would look something like:

if(linha.substr(0, 2) === "HTJ") 
{
    // Condição
}

Thank you in advance!

    
asked by anonymous 08.06.2015 / 05:49

3 answers

1

You can do this:

char *minhastring = "HTJxxxxxxxxxxxxxxxxxxxx"; // string lida no arquivo
char tres_primeiros[4]; // três caracteres mais o terminador de linha
// copia os três primeiros caracteres de um array para o outro
memcpy( tres_primeiros, &minhastring[0], 3); 
tres_primeiros[3] = '
char *minhastring = "HTJxxxxxxxxxxxxxxxxxxxx"; // string lida no arquivo
char tres_primeiros[4]; // três caracteres mais o terminador de linha
// copia os três primeiros caracteres de um array para o outro
memcpy( tres_primeiros, &minhastring[0], 3); 
tres_primeiros[3] = '%pre%'; // adiciona o terminador de linha
printf("%s", tres_primeiros); // imprime
'; // adiciona o terminador de linha printf("%s", tres_primeiros); // imprime

See working here .

    
08.06.2015 / 06:18
1

By your question, I believe that your intention is to only make the comparison in the if and for this case you can use the function strncmp. So the comparison would look like this:

if(strncmp(linha, "HTJ", 3))
{
    // Condição
}

But if you need to store the first 3 characters in a variable, then the response from @MarcusVinicius is perfect.

    
10.06.2015 / 22:24
0

If you define the array that will save the string read from the file with space to only 3 characters plus the terminator, the function fgets() does this automagically:

char principio[4];
//char resto[1000];
if (!fgets(principio, sizeof principio, ficheiro)) /* erro */;
//if (!fgets(resto, sizeof resto, ficheiro)) /* erro */;
    
08.06.2015 / 08:27