對不起,所有的問題,但我運行此代碼時,我的終端窗口上出現「分段錯誤(核心轉儲)」。C分割錯誤
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int usage (void) {
printf("Usage: head <file>\n");
printf(" Or: head <file> -n <number of characters>\n");
printf(" Or: head -n <number of characters> <file>\n");
return -1;
}
int main (int argc,char **argv) {
if ((argc != 2) && (argc != 4)) return usage();
char *fileName = argv[1];
int lineCount = 10;
FILE *src;
if ((argc == 4) && (strcmp(argv[1], "-n" != 0))){
fileName = argv[1];
lineCount = argv[3];
puts("-n in last position");
}else{
fileName = argv[3];
lineCount = argv[1];
puts("-n in first position");
}
if((src = fopen(fileName, "r")) == NULL){
puts("Can't open input file.");
exit(-1);
}
}
我非常確定這是與fopen函數,但我不完全確定爲什麼會發生這種情況。
另外我不知道爲什麼在這個格式的代碼非常可怕,所以很抱歉。 –
代碼格式化:避免使用製表符並預先格式化代碼,將製表符設置爲4位,以實現SO上最舒適的格式。 ('pr -e4 -l1 -t'是Linux上的一個合適的命令;可能還有其他的) –
您需要使用'atoi()'或類似的東西來轉換數字參數字符串 - 而不是分配一個指向整數。注意你的編譯器的警告! –