【发布时间】:2022-01-24 19:39:47
【问题描述】:
我想知道如何更改在 main() 中已具有固定默认名称的文件的名称。
正如您在主文件中看到的,文件的名称已经设置为 movies.dat (char dateiname[50] ="movies.dat"),我想用 case 'd' 来改变它到函数“dateiUmbenennen()”。此外,在我使用“dateiname”的任何地方都应该使用更改后的名称。
任何帮助都会很好!
这是我目前的代码:
int
dateiUmbenennen(char* pdateiname)
{
char newName[50];
printf("Bitte geben Sie den neuen Namen mit gewuenschtem Dateitypen ein: ");
scanf("%s", &newName);
int res = rename(pdateiname, newName);
if (!res)
{
printf("Datei wurde erfolgreich in %s umbenannt!\n", newName);
*pdateiname = newName[50];
}
else
{
printf("ERROR: Umbenennung fehlgeschlagen mit dem Fehler: %s!\n", strerror(errno));
}
return 0;
}
// ================================================================
// MAIN
// ================================================================
int main(void)
{
// Default fuer Namen der Filmdatei
char dateiname[50]= "movies.dat";
// Hilfsvariablen-------------------------------------------------------------------------------------------------
// Hilfsvariable fuer do-while-Schleife
int stopLoop = 0;
// Hauptschleife
do {
// Ausgabe des Bildschirm-Menus
printf("\nAUSWAHL-MENU:\n");
printf("(n) Neuen Film eingeben\n");
printf("(a) Alle Filme anzeigen lassen\n");
printf("(o) Filmdatenbank aus Datei einlesen\n");
printf("(s) Filmdatenbank in Datei speichern\n");
printf("(d) Dateinamen fuer Lesen/Speichern festlegen (Aktuell: %s)\n",
dateiname);
printf("(q) Programm verlassen\n");
//printf("\nIhre Wahl: ");
// Abfrage der Benutzerwahl
char ch = _getch();
printf("%c\n\n", ch);
// Aktionen in Abhaengigkeit von der Benutzerwahl
switch (ch)
//----------------------------------------------------------------------------------------------------------------------
{
case 'q': // Programm verlassen
stopLoop = 1;
break;
case 'n': // Neuen Film eingeben
movieDatensatz = benutzerEingabe();
break;
case 'a': // Alle Filme anzeigen lassen
konsolenAusgabe(movieDatensatz, anzahlFilme=dateiEinlesen(dateiname));
break;
case 'o': // Filmdatenbank aus Datei einlesen
dateiEinlesen(dateiname);
break;
case 's': // Filmdatenbank in Datei speichern
break;
case 'd': // Dateinamen fuer Lesen/Speichern festlegen
dateiUmbenennen(&dateiname[50]);
break;
case 'h':
printf("%s", dateiname);
break;
default: // keine gueltige Eingabe
printf("==> Ungueltige Eingabe!\n");
}
} while (!stopLoop);
return 0;
}
【问题讨论】:
-
最好提供问题的minimal reproducible example,而不是发布整个代码。如果您的代码使用非英语输出和变量/函数名称,则尤其如此,因为不会说该语言的人很难理解这样的程序。
-
提示:您只需要一个
printf()语句来显示您的整个菜单。 (或任何连续的文本块——无论包含多少'\n'字符)您甚至可以将格式字符串拆分为单独的行,每行都以'\n'结尾,因此可以根据需要写出显示菜单(相邻的字符串文字在编译过程中被组合成一个字符串......并且相邻的字符串文字之间的空格被忽略)
标签: c rename file-rename