[英]Variable Substitution in C
我想打開一個文件。 很容易。 使用fopen()。 但是,要打開的文件取決於用戶輸入。 我對Korn Shell腳本有點精通,使用變量替換很容易做到:$(var)。 我無法在C中找出正確的格式。有人可以給我一些見解嗎? 我的代碼 -
#include <stdlib.h>
#include <stdio.h>
char statsA[100];
char fileA[50];
int main (void)
{
printf("Enter file to open\n");
gets(fileA);
FILE *statsA;
statsA = fopen("c:/Users/SeanA/C/***<fileA>***", "r+");
.......................................^ What goes here?
我不確定如何在fopen字符串中包含用戶輸入。
scanf
用於從用戶獲取文件。
創建一個char數組來保存文件名。
char filename[15];
現在請求文件名:
printf("What is the name of the file?\\n");
scanf("%s", &filename);
注意:包括FULL文件名。 所以,如果我有一個名為filename
的文本doc,用戶需要輸入filename.txt
現在你有了文件名,你可以聲明一個文件指針
FILE * fp;
fp = fopen(filename, "r");
現在你應該能夠掃描你的文件了!
fscanf(fp, "%d", &value);
編輯:我沒有注意到你想要與文件路徑串聯連接。
由於您知道預定義路徑,因此可以創建另一個包含該字符串路徑的char數組
char fullPath[100];
char path[75] = "c:/Users/SeanA/C/";
現在你可以使用strcat
將它們組合在一起!
strcat(fullPath, path);
strcat(fullPath, filename);
現在你做fopen(fullPath, "r");
您必須手動連接兩個字符串。 像這樣的東西
char* folder = "c:/Users/SeanA/C/";
char* path = malloc(strlen(fileA) + strlen(folder) + 1);
path = strcpy(folder);
path = strcat(fileA);
FILE *statsA = fopen(path, "r+");
free(path);//Always free your memory
這就是sprintf
的用途。 它的工作方式與printf
類似,只是它的輸出變為字符串而不是stdout
。
char filename[100];
sprintf(filename, "c:/Users/SeanA/C/%s", fileA);
statsA = fopen(filename, "r+");
此外,您在main
的statsA
的定義會掩蓋文件范圍內的定義。 你可能想給這些不同的名字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.