#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!”文本。在里面。这段代码出了什么问题?
答案 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