C 什么';“这有什么不对吗?”;简单的;代码
我正试着做一个非常简单的任务C 什么';“这有什么不对吗?”;简单的;代码,c,C,我正试着做一个非常简单的任务 检查文件是否存在 如果没有,那就做吧 这些文件应该命名为:M0 M1 M2等等。 这是我写的代码。它适用于M0,之后我得到分段错误: #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main (){ unsigned int fileIndex=0; char* fileName="M0"; FILE* recordFile
M0
,之后我得到分段错误
:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main (){
unsigned int fileIndex=0;
char* fileName="M0";
FILE* recordFile = NULL;
while((access(fileName,F_OK)!=-1)) {
fileIndex++;
sprintf(fileName,"M%d",fileIndex);
printf("%s\n",fileName);
}
recordFile = fopen(fileName,"wb+");
fclose(recordFile);
return 0;
}
#包括
#包括
#包括
int main(){
无符号int fileIndex=0;
char*fileName=“M0”;
FILE*recordFile=NULL;
while((访问(文件名,F_OK)!=-1)){
fileIndex++;
sprintf(文件名,“M%d”,文件索引);
printf(“%s\n”,文件名);
}
recordFile=fopen(文件名为“wb+”);
fclose(记录文件);
返回0;
}
知道我做错了什么吗?提前谢谢 您正在写入字符串文本,该文本通常存储在只读内存中
char* fileName="M0";
将其更改为一个数组,该数组是文本的副本,以解决当前问题
char fileName[]="M0";
但是,如果超过10
,则可能会遇到存储问题,因此最好分配更大的缓冲区以容纳更大的文件名长度
char fileName[10] = "M0";
您正在写入字符串文字,该文字通常存储在只读内存中
char* fileName="M0";
将其更改为一个数组,该数组是文本的副本,以解决当前问题
char fileName[]="M0";
但是,如果超过10
,则可能会遇到存储问题,因此最好分配更大的缓冲区以容纳更大的文件名长度
char fileName[10] = "M0";
那么你的解决方案建议是什么呢?谢谢你的回答,我不允许接受,直到8点min@Engine,非常欢迎。顺便说一句,你可能会注意到这种情况经常发生,有人会发布一个答案,然后对其进行编辑:)那么你的解决方案建议是什么呢?谢谢你的回答,我不允许接受它,直到8点min@Engine,非常欢迎。顺便说一句,您可能会注意到这种情况经常发生,有人会发布答案,然后对其进行编辑:)重复问题会自动链接到您问题的正上方。重复问题会自动链接到您问题的正上方。