標準出力出来ず セグメントエラー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 標準出力出来ず セグメントエラー

Re: 標準出力出来ず セグメントエラー

#5

by かずま » 7年前

tennga さんが書きました:キーボードから入力しても出力出来ずセグメントエラーになり一考に分かりません、、、
char str1[N][LEN]; を
char str1[N+1][LEN]; に修正し、

fprintf(fp, "%s: %d\n", str1, population); を
次のように修正すればよいのではありませんか?

コード:

  for (i = 0; strcmp(str1[i], str1[N]); i++) ;
  if (i < N)
    printf("%s: %d\n", str1[i], population[i]);
  else
    printf("not found\n");
質問の回答は放置しないで、必ず返信してください。

Re: 標準出力出来ず セグメントエラー

#4

by みけCAT » 7年前

読み込みモードで開いたファイルにfprintfしようとしているのもおかしいと思います。

Re: 標準出力出来ず セグメントエラー

#3

by YuO » 7年前

for文から出た後,i == Nになっています。
その後のscanfで,str1,つまりはstr1[N]にアクセスしようとしています。
str1はN個の要素しかないので,str1[N]へのアクセスはしてはいけません。
オフトピック
デバッガ使って一行ずつ実行すればすぐわかると思うのですが……。

Re: 標準出力出来ず セグメントエラー

#2

by purin52002 » 7年前

コード:

printf("区の名称を入力せよ: ");
scanf("%s",str1[i]);
fprintf(fp,"%s: %d\n", str1[i], population[i]);
この時点でi=Nになっているので、配列の範囲外にアクセスしているような気がします。

標準出力出来ず セグメントエラー

#1

by tennga » 7年前

コード:

#include<stdio.h>
#include<string.h>
#define LEN 20
#define N 7

void swapstr(char *s1,char *s2)
{
  char tmp[LEN];

  strcpy(tmp, s1);
  strcpy(s1, s2);
  strcpy(s2, tmp);
}

int main(void)
{
  char str1[N][LEN];
  int i,j,k,population[N],tmp;
  FILE *fp;

  fp = fopen("kobe_popul.txt","r");

  if(fp == NULL){
    printf("ファイルをオープンできませんでした。\n");
    return 1;
  }

  for(i=0;i<N;i++){
    fscanf(fp,"%s %d",str1[i], &population[i]);
  } 


  printf("区の名称を入力せよ: ");
  scanf("%s",str1[i]);
  fprintf(fp,"%s: %d\n", str1[i], population[i]);

  fclose(fp);

  return 0;
}
キーボードから入力しても出力出来ずセグメントエラーになり一考に分かりません、、、
教えてください!

ちなみに実行結果がこのようになります。

実行例
$ ./a.out
区の名称を入力せよ: Higashinada
Higashinada: 213342
$ ./a.out
区の名称を入力せよ: Hyogo
Hyogo: 106823

ページトップ