Я использую fprintf для хранения значений, введенных пользователем в файл. Код работает не так, как ожидалось (первое, что после запроса «Продолжить?» Или «N:» программа автоматически принимает какое-то значение и продолжает цикл. Во-вторых, он не сохраняет значение, введенное пользователем в файл. : Я могу позволить программе оперативно использовать ли продолжать цикл или не помещая места в зсапЕ до% с, но по-прежнему файл admin_db.txt не получает заполняется правильноfprintf use in C
#include<stdio.h>
typedef struct {
char str[30];
int a[10];
}UNIX;
int main()
{
UNIX admin;
char ch;
FILE *fp;
fp=fopen("admin_db.txt","w+");
while(1)
{
printf("\nEnter the name of admin : ");
scanf("%s",&admin.str);
printf("\nEnter the age of admin : ");
scanf("%d",&admin.a);
fprintf(fp,"%s%t%d",admin.str,admin.a);
printf("\nDo you want to continue ? Y or N :");
scanf("%c",&ch);
if(ch=='n' || ch=='N')
break;
}
fclose(fp);
}
Выход:.
Enter the name of admin : Akhil
Enter the age of admin : 23
Do you want to continue ? Y or N : //Automatically taking some value // other than n or N and continuing loop.
Enter the name of admin : sukhi
Enter the age of admin : 30
Do you want to continue ? Y or N :
Enter the name of admin :
Enter the age of admin : ^C
Кроме того, sizeof file admin_db.txt имеет 0 байтов.
'% T' не является допустимым [' fprintf'] (http://en.cppreference.com/w/c/io/fprintf) спецификатор (что я знаю), вы имели в виду '\ t'? – Kninnug
Много раз дубликат. 'Scanf()' оставляет строку новой строки во входном буфере; 'scanf ("% c ", ...)' захватывает новую строку. Поместите пробел перед '% c': scanf ("% c ", &ch);', чтобы пропустить пробел. Проверяйте возвращаемое значение из 'scanf()' каждый раз. Если это не количество значений вы ожидали (1 в вашем коде), есть проблема. –
@Kninnug вы правы Я имел в виду \ t, в любом случае ситуация такая же. – theartist33