【发布时间】:2014-12-04 11:49:21
【问题描述】:
所以,我必须创建一个程序来管理库而不使用#include
我的问题是在我用来添加一本书的函数中,我必须告诉用户他是否超出了数组限制。你建议我怎么做?
我决定使用scanf(" %NUMBER[^\n], libro[i].title)
这是我到目前为止所拥有的(在 printf 中,我基本上要求输入作者和内容,或者我告诉用户他超出了限制):
int main(int argc, char *argv[]){
int N, codice, i = 0, j = 0;
book Library[MAXlibri];
boolean ricerca, esito;
void InsertBook(book libro[], int i){
printf("Inserire il titolo del libro (max 50 caratteri)\n");
scanf(" %49[^\n]", libro[i].title);
if(sizeof(libro[i].title) > 50){
printf("Sono stati inseriti troppi caratteri quando si inseriva il titolo del libro\n");
}
printf("Inserire autore o autori (max 30 caratteri)\n");
scanf(" %29[^\n]", libro[i].auth);
if(sizeof(libro[i].auth) > 30){
printf("Sono stati inseriti troppi caratteri quando si inseriva l'autore\n");
}
printf("Inserire casa editrice (max 20 caratteri)\n");
scanf(" %19[^\n]", libro[i].editor);
if(sizeof(libro[i].editor) > 20){
printf("Sono stati inseriti troppi caratteri quando si inseriva la casa editrice\n");
}
printf("Inserire una breve descrizione (max 50 caratteri)\n");
scanf(" %49[^\n]", libro[i].descr);
if(sizeof(libro[i].descr) > 50){
printf("Sono stati inseriti troppi caratteri quando si inseriva la descrizione\n");
}
printf("Inserire genere letterario (max 20 caratteri)\n");
scanf(" %19[^\n]", libro[i].genre);
if(sizeof(libro[i].genre) > 20){
printf("Sono stati inseriti troppi caratteri quando si inseriva il genere letterario\n");
}
printf("Inserire codice numerico libro\n");
scanf("%d", &libro[i].code);
printf("Inserire anno di pubblicazione\n");
scanf("%d", &libro[i].year);
printf("Inserire numero pagine\n");
scanf("%d", &libro[i].pages);
if(sizeof(libro[i].title) < 50 && sizeof(libro[i].auth) < 30 && sizeof(libro[i].editor) < 20 && sizeof(libro[i].descr)<50 && sizeof(libro[i].genre) < 20){
printf("Libro inserito con successo!\n");
}
else{
printf("Il libro non e' stato inserito correttamente, riprovare\n");
}
}
【问题讨论】:
-
你是什么意思“没有
#include”?如果不包含stdio.h,您就不能使用scanf,而且您的格式可能是错误的:" %19[^\n]"读取19 到底是什么?我认为你想要" %19[^\n]s" -
@EliasVanOotegem
" %19[^\n]s":s不是必需的。 -
@BLUEPIXY:没错,你是……不过,没有
#include位很奇怪。 OP 可能在没有意识到的情况下依赖 gcc 的自动包含。-Wall -pedantic标志可能没有在这里使用 -
@EliasVanOotegem 是的,只是在
#include之外添加了一个原型。它可能无法作为一个整体发挥作用。
标签: c arrays string scanf sizeof