我正在打印:

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来执行此操作,但结果相同。

最佳答案

fgets文档中:


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


因此,当您阅读字符串时,它们实际上包含换行符,然后将其打印为字符串的一部分。代替使用fgets(),使用scanf()可以读取直到第一个空格(不包括):

 scanf( "%50s", aula );

关于c - C- fprintf同一行中的两个变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23665061/

10-08 22:48