我需要我的程序來獲取一系列文件名(存儲在單個「字符串」中,並用逗號分隔)並對其執行操作。逗號分隔C
的僞代碼將是:
for each filename in some_string
open filename
operate on contents of filename
close filename
的問題是,我卡分離some_string( 「文件名1,文件名2,...,filenamen」)到[文件名1],[2名] ,... [文件名n]。
編輯:爲了澄清,保持some_string完整並根據需要提取每個文件名似乎更簡單,這正是我正在嘗試執行的操作。
我的代碼,因爲它的立場,是非常笨拙的(和相當噁心...)
int j = 0;
char *tempS = strdup(filenames);
while (strchr(tempS, ',')) {
char *ptr = strchr(tempS, ',');
*ptr++ = '.';
numFiles++;
}
for (; j < numFiles; j++) {
char *ptr = strchr(tempS, ',');
//don't know where to go from here...
fin = openFile(tempS);
if (fin != NULL) {
//do something
}
fclose(fin);
}
它沒有這樣做,很明顯。我正確地找到了文件的數量,但是在確定如何從源字符串中逐個分離一個文件並對其進行操作時,我有點失落。
我不是在尋找正則表達式(或同樣複雜的解決方案),要麼。我正在尋找一個簡單的機械答案。 –
由於您已經通過'strdup'複製了字符串,請嘗試拷貝上的'strtok' - 不要忘記釋放拷貝。 – John3136
使用'strtok(str,「,」);'。在第一次調用中,'str'是你的字符串,在隨後的調用NULL中。 –