【发布时间】:2013-12-24 04:17:42
【问题描述】:
我有一个名为“图形”的文本文件,其中包含“脱氧核糖核酸”字样。
当我运行此代码时,它可以工作并返回第一个字符。 “d”
int main(){
FILE *fileptr;
fileptr = fopen("graphics.txt", "r");
char name;
if(fileptr != NULL){ printf("hey \n"); }
else{ printf("Error"); }
fscanf( fileptr, "%c", &name);
printf("%c\n", name);
fclose( fileptr );
return 0;
}
当我使用fscanf 函数时,我发送的参数是 FILE 对象的名称、函数将读取的数据类型以及它将存储所述数据的对象的名称,对吗?另外,为什么我必须在fscanf 的名称前面加上& 而不是printf?
现在,我想让程序读取文件并获取第一个单词并将其存储在名称中。 我知道这必须是一个字符串(字符数组)。 所以我做的是这样的: 我把 name 做成了一个可以存储 20 个元素的字符数组。
char name[20];
并将fscanf和printf中的参数分别改成这个:
fscanf( fileptr, "%s", name);
printf("%s\n", name);
这样做不会导致编译器出错,但程序会崩溃,我不明白为什么。我让fscanf 知道我希望它读取一个字符串,我也让printf 知道它将输出一个字符串。我哪里做错了?我将如何完成上述任务?
【问题讨论】:
-
如果要使用
fscanf,最好设置一个宽度。以%19s为例。
标签: c string compiler-construction scanf