注意检查我的C代码有什么问题

时间:2016-07-14 20:57:13

标签: c syntax syntax-error

我在我的在线课程中再次遇到来自此编译器的错误消息。我不知道这个语法错误可能是什么,因为我已经多次通过代码并且它与我正在处理的章节中给出的示例代码几乎完全相同。我认为新鲜有经验的眼睛可以发现我在这里失踪的东西  一切都很艰难可能是完全愚蠢的事情

编辑:错误消息只是语法错误 " 源代码中存在语法错误 如果您忘记了一行中的分号,请检查。 检查{附近的源代码。 "

EDIT2:是的,缺少")"再次感谢您的快速帮助!

#include <stdio.h>
int main(void)
{
int i ;
FILE *kirj_tied ;
char luettelo[] = "luettelo.txt";

struct henkilo 
{
    char etunimi[21];
    char sukunimi[21];
    char numero[21];
};

struct henkilo henkilo_lista[50];

for (i=0 ; i < 50 ; i++)
{
    printf("Anna etunimi:\n");
    scanf("%s",henkilo_lista[i].etunimi);
    printf("Anna sukunimi:\n");
    scanf("%s",henkilo_lista[i].sukunimi);
    printf("Anna puhelinnumero:\n");
    scanf("%s",henkilo_lista[i].numero);
}

if ((kirj_tied = fopen(luettelo,"w") == NULL)
    {
        printf("Virhe tiedoston avaamisessa.");
        return 0 ;
    }
else
    {
        for(i=0 ; i<50 ; i++)
        {
            fprintf(kirj_tied,"%s %s %s\n", henkilo_lista[i].etunimi,henkilo_lista[i].sukunimi,henkilo_lista[i].numero);
        }
    }

    fclose(kirj_tied);
    printf("Tietojen tallennus onnistui.");
    return 0 ;
}

2 个答案:

答案 0 :(得分:1)

该行

if ((kirj_tied = fopen(luettelo,"w") == NULL)

或许缺少一个括号?应该是:

if ((kirj_tied = fopen(luettelo,"w")) == NULL)

答案 1 :(得分:0)

您在使用)语句的行上错过了正确的paren(if)。

应该阅读

if ((kirj_tied = fopen(luettelo, "w")) == NULL) {
                                     ^ that one

在代码上运行代码压缩器会标记这一点。大多数编译器会给你一个更有帮助的错误信息。

例如,Clang编译器说

prog.c:28:5: error: expected ')'
    {
    ^
prog.c:27:4: note: to match this '('
if ((kirj_tied = fopen(luettelo,"w") == NULL)
   ^