为什么我会收到分段错误 11? [C]
Why am I getting segmentation fault 11? [C]
我是 C 的新手,正在尝试弄清楚为什么我在以下代码中遇到分段错误。我在这里要做的就是检查我的第一个参数是否包含 .txt,无论我是否这样做,程序都会打印出来。
#include <stdio.h>
int main(int argc, char *argv[]) {
char filename = argv[1];
char *txt_filename = filename;
char *check_txt = ".txt";
char *txtvalid = strstr(txt_filename, check_txt);
if (txtvalid) {
printf("You have entered a correct text file!");
}
else {
printf("You have entered an incorrect text file!");
}
}
当我 运行 这段代码时,我得到一个段错误 11。我不确定那是什么意思。谁能帮帮我?
您需要先测试 argc
才能访问 argv
尝试:
#include <stdio.h>
int main(int argc, char *argv[]) {
// Check for argument
if (argc <= 1)
{
printf("Missing argument\n");
return 0;
}
char *filename = argv[1]; // Notice this change, i.e. *filename
char *txt_filename = filename;
char *check_txt = ".txt";
char *txtvalid = strstr(txt_filename, check_txt);
if (txtvalid) {
printf("You have entered a correct text file!");
}
else {
printf("You have entered an incorrect text file!");
}
}
我是 C 的新手,正在尝试弄清楚为什么我在以下代码中遇到分段错误。我在这里要做的就是检查我的第一个参数是否包含 .txt,无论我是否这样做,程序都会打印出来。
#include <stdio.h>
int main(int argc, char *argv[]) {
char filename = argv[1];
char *txt_filename = filename;
char *check_txt = ".txt";
char *txtvalid = strstr(txt_filename, check_txt);
if (txtvalid) {
printf("You have entered a correct text file!");
}
else {
printf("You have entered an incorrect text file!");
}
}
当我 运行 这段代码时,我得到一个段错误 11。我不确定那是什么意思。谁能帮帮我?
您需要先测试 argc
才能访问 argv
尝试:
#include <stdio.h>
int main(int argc, char *argv[]) {
// Check for argument
if (argc <= 1)
{
printf("Missing argument\n");
return 0;
}
char *filename = argv[1]; // Notice this change, i.e. *filename
char *txt_filename = filename;
char *check_txt = ".txt";
char *txtvalid = strstr(txt_filename, check_txt);
if (txtvalid) {
printf("You have entered a correct text file!");
}
else {
printf("You have entered an incorrect text file!");
}
}