2015-10-06 68 views
-3

所以我试图编写一个函数,它将打开一个不同的文件,具体取决于它何时被调用,但是当我检查文件名,我试图使用我得到一个奇怪的非acii字符,必须是一个问题与snprint。文件不可用的变量字符串名称?

char name[20]; 
sprintf(name,"file_part%d", 6); //likely problem here. 
FILE *file=fopen(name,"r"); //this doesn't work 
printf("name is : %s", name); // and this prints a weird symbol on the terminal 
+1

由于您已经要求'printf'打印'name'的*地址*的第一个字节,所以您会得到一个奇怪的非ASCII字符。试试'printf(“name is:%s \ n”,name);''%c'将一个8位值打印为一个字符。 '%s'打印一个字符串。 – lurker

+0

对不起,应该是s,但是文件仍然没有打开,这是真正的问题,打印只是为了调试。 – dcousina

+0

请解释*不打开*。在fopen调用之后你检查过'file'的值了吗?它是否为'NULL'?或者是什么? – lurker

回答

2
printf("name is : %c", name); // and this prints a weird symbol on the terminal 

%c格式说明用于打印的字符,但name是由ASCII NUL终止字符数组(也称为C-风格字符串)。对于字符串,请使用%s,而不是%c

+0

对不起,我应该更清楚。这确实修复了acii字符,但它仍然无法正确打开文件。 – dcousina

+0

这是什么意思?它是否打开文件不正确? –