현재 CS 랩을 코딩하려고하는데 볼 수없는 세그먼트 오류가 발생합니다. 나는 바보 같은 짓을하고 있나? 코드는 명령 행 args ("blah.exe hello world")를 취하여 주위에 배너로 출력해야합니다. 우리 수업에는 C에 대한 사전 지식이 없지만 데이터 구조에 대한 사전 강좌가 있습니다.C 세그먼트 화 오류 (오류 코드
예 출력
===============
= hello world =
===============
자료 : 간단히 명령 줄 인수를 매개 변수없이 실행 만 추가하는 GCC -std = C99 -Wall bannerize.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[]) {
if(argc <= 1) {
return EXIT_FAILURE;
}
printf("TEST");
int row_length = argc + 3; //3 for space after last word and 2 extra border chars
for(int i = 1; i < argc; i++, row_length += strlen(argv[i]));
printf("TEST2");
char c;
while((c=getchar())!=EOF) {
printf("TEST3");
for(int i = 1; i < argc; i++, printf("%c", c));
printf("\n");
printf("%c ", c);
for(int i = 1; i < argc; i++, printf("%s ", argv[i]));
printf("%c\n", c);
for(int i = 1; i < argc; i++, printf("%c", c));
printf("\n");
}
return EXIT_SUCCESS;
}
작품 벌금 컴파일입니다 아무것도 인쇄하기 전에 세분화 오류가 발생합니다.
_ 무엇이든 인쇄하기 전에 세그멘테이션 오류가 발생했습니다 ._ 인쇄 명령문이 출력을 플러시하지 않기 때문에 사실인지 모릅니다. 더 나은 정보를 얻으려면'printf ("TEST \ n");와 같이 각각의 끝에'\ n'을 추가하십시오. 또는'fflush (stdout);을 통해 수동으로 출력을 플러시하십시오. – mah
적어도'c'는'int'를 선언하고 싶을 것입니다. 'int '를 반환하는'getchar'외에'EOF'는'char'에 적합하지 않으므로'while'은 끝나지 않을 것입니다. – Kninnug