С:\\Projects\\myProject\\Debug\\file.txt == ..\\debug\\file.txt
С:\\Projects\\myProject\\Release\\file.txt == ..\\release\\file.txt
С:\\Projects\\myProject\\Other\\file.txt == ..\\other\\file.txt
С:\\Projects\\myProject\\file.txt == ..\\file.txt
...
fopen("..\\file.txt", "r")
Мне нужно чтобы при передаче файла не нужно было писать какой либо длинный путь, а просто можно было бы передать имя файла.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
char* get_file_path(char* dir, char* fname)
{
dir = _getcwd(dir, MAX_PATH);
strcpy(&dir[strlen(dir)], "\\");
strcpy(&dir[strlen(dir)], fname);
return dir;
}
int main(int argc, char* argv[])
{
/* uncomment
if(argc != 1)
{
printf("error: usage myapp.exe file.txt\n");
return -1;
}
uncomment */
char dir[MAX_PATH];
char* file = "file.txt";//test
char* full_file_name = get_file_path(dir, file);// get_file_path(dir, argv[0])
FILE* fp = fopen(full_file_name, "r");
if(fp)
{
printf("Open\n");
fclose(fp);
}
printf("%s", full_file_name);
free(full_file_name);
return 0;
}
while ((len = getlen(&p1,&p2)) >0){
if (len >= len_max){
len2 = del_spacetab(&p1,len);
len-=len2;
len_p2 += len;
coppy(&p2, &p1,len_p2,len,&first_round);
}
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
struct Node* next;
int value;
} Node;
typedef struct List {
Node* head;
Node* list[10];
} List;
void newNode(List* change_list, int value) {
int size = sizeof(change_list)/sizeof(*change_list);
if (size == 0) {
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->next = NULL; // здесь
new_node->value = value; // и здесь вываливается ошибка
change_list->list[size] = new_node;
change_list->head = change_list->list[0];
}
}
int main() {
List* new_list = (List*)malloc(sizeof(List));
newNode(new_list, 5);
printf("%d", new_list->list[0]->value);
}
#include <linux/timer.h>
timer_setup(ptimer, pfunc, (u32)cntx);
ptimer->function = pfunc;
ptimer->data = (unsigned long)cntx;
init_timer(ptimer);