我打印这个:
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
来做,但结果相同。
答案 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
aula
和aulaIP2
实际上是字符串,还是您尝试编写整数(%d)?