Я новичок в C, и я хочу создать библиотеку со входами, это название, автор и год публикации книги. и выходы - это код полки (сокращенный заголовок), код книги (первая буква названия книги и первая буква автора), название, авторский и книжный год выпуска. если я введу «C Как программировать» в заголовке, поэтому код полки должен печатать «CHtP». и возникает вопрос: когда я печатаю код полки, в моей программе напечатан странный символ. Пожалуйста, помогите ..weird array string output
int main()
{
char title[5][200], author[5][200], shelf[5][200], bookcode[5][200], temp[200];
int year;
printf("Welcome to Blues Library\n");
printf("============================\n\n");
for(i = 0; i < 2; i++)
{
printf("Book's Title = ");
scanf("%[^\n]s", &title[i]); fflush(stdin);
printf("Book's Author = ");
scanf("%[^\n]s", &author[i]); fflush(stdin);
printf("Book's publishing year = ");
scanf("%d", &year); fflush(stdin);
printf("\n");
}
printf("\n");
for(i = 0; i < 2; i++)
{
for(j = 0; j < strlen(title[i]); j++)
{
if(j == 0)
{
shelf[i][j] = title[i][j];
}
else if(title[i][j-1] == ' ')
{
shelf[i][j] = title[i][j];
}
}
}
//print
for(i = 0; i < 2; i++)
{
printf("Book's Title = %s\n", title[i]);
printf("Book's Author = %s\n", author[i]);
printf("Book's publishing year = %d\n", year);
printf("Shelf Code = %s\n", shelf[i]);
}
}
'fflush (STDIN)' плохо (неопределенное поведение). –
даже badder: 'scanf ("% [^ \ n] s ", & title [i])' должен быть 'scanf ("% [^ \ n] s ", title [i])'. то же самое для 'author' и всех строк BTW –
сначала лучше иметь рабочую программу, вставленную :-) во-вторых, проблема в вашем' scanf'; так как вы вводите строки для 'title' и' author' (которые обозначаются символьными массивами), '' '' '' не нужно перед ними в 'scanf'. как @PaulR сказал, что вы не должны использовать 'fflush (stdin)' ... нет необходимости в этом –