C-fprintf同一行中的两个变量

时间:2014-05-14 21:02:08

标签: c printf

我打印这个:

char aulaIP2[50];
char aula[50];

printf("Enter the name of classroom: ");
fgets(aula, 49, stdin);
if (fgets(aula, sizeof aula, stdin)){
        printf("Enter IP classroom: ");
        fgets(aulaIP2, 49, stdin);
        FILE *file = fopen("aules.text", "w+");
        fprintf(file, "%s:%s", aula, aulaIP2);
        fclose(file);
        getchar();
}

并且文件中的输出为:

306
:127

我希望:

306:127

为什么不能fprintf能够在同一行打印?我已经尝试用两个fprintf来做,但结果相同。

3 个答案:

答案 0 :(得分:2)

来自fgets文档:

  

换行符使fgets停止读取,但它被函数视为有效字符,并包含在复制到str的字符串中。

因此,当您读入字符串时,它们实际上包含换行符,然后将其作为字符串的一部分打印出来。而不是使用fgets()使用scanf(),它将读取直到第一个空格(并且不包括):

 scanf( "%50s", aula );

答案 1 :(得分:0)

根据http://www.cplusplus.com/reference/cstdio/fprintf/,fprintf能够在一行中打印。请参阅该页面底部的示例。

答案 2 :(得分:-1)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
    char* aula = "306";
    char* aulaIP2 = "127";

    FILE* file = fopen("aules.text", "ab+");
    fprintf(file, "%s:%s", aula, aulaIP2);
    fclose(file);

    return 0;
}

当我阅读aules.text时,我看到了:

306:127

aulaaulaIP2实际上是字符串,还是您尝试编写整数(%d)?