char fileName[BUF] = { 0 };
FILE *check = popen("ls *.py", "r");
if (check != NULL) {
while(fgets(fileName, BUF, check) != NULL) {
puts(fileName);
}
}
else {
printf("Error!");
}
file2.py
file3.py
file.py
char* file1 = // Тут хранится первая строка, т.е "file2.py"
char* file2 = // Тут хранится вторая строка, т.е "file3.py"
// Обращение:
char result[BUF] = { 0 };
FILE *com = popen(("cat %s", file1), "r");
if (com != NULL) {
while(fgets(result, BUF, com) != NULL);
}
else {
printf("Error!");
}
fclose(com);
strtok()
, но, походу, на Линуксе она не работает.... #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_TOKENS 3
#define DELIMITER "\n"
int main(int argc, char* argv[]) {
char s[30] = "file2.py\n"
"file3.py\n\n" // Хоть одинарные, хоть двойные
"file.py\n";
char* tokens[MAX_TOKENS];
char* token = strtok(s, DELIMITER);
for (int i = 0; (token != NULL) && (i < MAX_TOKENS); i++) {
tokens[i] = token;
token = strtok(NULL, DELIMITER);
}
for (int i = 0; i < MAX_TOKENS; i++)
printf("%s\n", tokens[i]);
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <string.h>
#define BUF 128
void doit(char* buf, char* cmd)
{
char command[BUF] = {0};
char cmdbuf[BUF] = {0};
FILE* nextfp;
char* filename = strtok(buf, " ");
while(filename)
{
sprintf(command, "%s %s", cmd, filename);
if((nextfp = popen(command, "r")) != NULL)
{
while(fgets(cmdbuf, BUF, nextfp) != NULL)
{
puts(cmdbuf);
}
pclose(nextfp);
}
filename = strtok(NULL, " ");
}
}
void pipeline(FILE* fp, char* cmd)
{
char buf[BUF] = {0};
while(fgets(buf, BUF, fp) != NULL)
{
doit(buf, cmd);
}
}
int main()
{
FILE *check = popen("ls *.c", "r");
if (check != NULL)
{
pipeline(check, "cat");
pclose(check);
}
return 0;
}