在c编程中创建一个文件并在文件中写入hello world

时间:2016-06-23 11:09:53

标签: c file

#include<stdio.h>    
int main()
{    
    FILE *opening;
    opening = fopen("hello.usr","w");
    fprintf(opening,"Hello world!");     
    fclose(opening);
    printf("Writing to the file was successful.\n");
    printf("Closing the program");
    return 0;
}

我已经尝试过这段代码在c编程中创建一个文件并写下“Hello world!”文本。在里面。这段代码出了什么问题?

5 个答案:

答案 0 :(得分:3)

如果您想知道什么是错误,请检查fopen

的结果
opening = fopen("hello.usr","w");
if (opening == NULL) {
    perror("fopen");
}

答案 1 :(得分:1)

截至目前,您还不知道自己是否设法写入文件,因此这里有一个检查文件的建议。

FILE *opening;
opening = fopen("hello.usr", "w");
if (opening == NULL){
    perror("fopen");
    return 0;
}

通过在此处返回0,您可以删除分段错误选项,因为代码仍然会尝试写入文件,即使它不存在。

答案 2 :(得分:1)

您最肯定的错误消息不是由编译器生成的。它在我看来是一个自动检查器的消息,它测试了提交解决方案的正确性。

确保输出与完全匹配所需的输出。

消息:

您的程序输出短于预期的

可能表示新行字符('\ n')有问题。检查那些。

例如,如果所需的输出是:

写入文件成功。关闭程序。

...打印在一行中,您的输出显然不匹配,因为它在第一句后面有一个新行。如果检查器测试第一次出现的新行字符,则只能看到

写入文件成功。

这可能是许多可能的解释之一。如果是这种情况,请尝试:

#include<stdio.h>    
int main()
{    
    FILE *opening;
    opening = fopen("hello.usr","w");
    fprintf(opening,"Hello world!");     
    fclose(opening);
    // printf("Writing to the file was successful.\n");
    // printf("Closing the program");
    printf("Writing to the file was successful. Closing the program\n");
    return 0;
}

另请注意,此类错误消息(在自动测试环境中)通常由无限制的,添加的额外或混淆的不可打印字符(空格,制表符,新行)或标点符号触发,这很难被注意到。

您可能还想在此方面检查您打印到文件的文本。

答案 3 :(得分:0)

尝试相反&#34; w&#34;使用&#34; wt&#34;在fopen

答案 4 :(得分:0)

尝试以下

#Example
OPTION_1=""
option_array[0]="1"
option_array[1]="2"

options="$@"


set_options(){
    prev_option=""

    for option in $options;
    do
        case $prev_option in
            "-t" )
                OPTION_1=$option
            ;;
            "-d" )
                option_array+=("$option")
            ;;
            "-g" )

                option_array_2+=("$option")
            ;;

        esac

        prev_option="$option"

    done

}

function test()
{
    set_options

    echo $OPTION_1
    echo ${option_array[*]}
    echo ${option_array_2[*]}

}


test