fscanf问题,每次使用一个字符

fscanf问题,每次使用一个字符,c,scanf,C,Scanf,当我尝试使用fscanf读取包含 比萨薯条汉堡作为其中一行。我试图将它们添加到变量中,但每次只需要一个字母 if (infile) { while (fscanf(infile, "%c", &cit) > 0) { printf("%c\n",cit); 我怎样才能让比萨饼这个词代替PIZA呢 char word[256]; if (infile) { while (fscanf(infile, "%255s", word) == 1)

当我尝试使用fscanf读取包含
比萨薯条汉堡
作为其中一行。我试图将它们添加到变量中,但每次只需要一个字母

if (infile) {
    while (fscanf(infile, "%c", &cit) > 0) {
        printf("%c\n",cit);
我怎样才能让比萨饼这个词代替PIZA呢

char word[256];

if (infile)
{
    while (fscanf(infile, "%255s", word) == 1)
        printf("Word: %s\n", word);
}
请注意,如果希望一次读入整行、空格和全部,则将使用
fgets()


注意:
fgets()
保留换行符,除非换行符太长而必须截断,因此
printf()
格式不需要自己的换行符。通常,如果使用
fgets()
sscanf()
比只使用
scanf()
fscanf()
更容易控制输入。特别是,您通常可以提供更好的错误诊断,因为您拥有用户键入的所有内容。如果有必要,您也可以尝试其他格式。

我不是故意粗鲁,但不要使用
%c
。对单个字符串使用
“%s”
。您应该阅读有关
scanf
及其格式代码的更多信息。在
“%c”
中,
c
表示“字符”,即一次读取一个字符。如果要读取整行,则应使用。@JoachimPileborg:例如,允许您使用
%255c
,并且它将读取255个字符(不跳过前导空格)加上一个终端null,而不考虑空格、换行符等。
%c
的默认值相当于
%1c
,而
%s
的默认值是不确定的字符数(它跳过前导空格,并在前导空格后的第一个空格处停止)。因此,是的,您通常使用
%c
格式,它只读取一个字符,但这不是唯一的使用方法。@dLiGHT:使用
fgets
读取一行。@KeithThompson:我的作业是
布法罗纽约12345
我正在与城市、州和人口合作。如何将每列提取到每个单独的数组中?
char line[4096];

if (infile)
{
    while (fgets(line, sizeof(line), infile) != 0)
        printf("Line: %s", line);
}