初心者です.

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

初心者です.

#1

投稿記事 by おもこもえ » 13年前

C言語初心者ですが質問です.
テキストファイルに「1800/2000/0/9999」と書かれていて9999の部分を別のテキストファイルに保存するといったプログラムを組んでいます.
元のテキストをa配列に入れて,テキストは「A/B/C/D」といった形式ですので"/"を3つカウントしてそれ以下をb配列に代入して,b配列をoutput.txtに保存する.といった流れをイメージした以下のプログラム組んだのですがうまく動作しません.
初心者なので皆様からみたらとてもおかしなことをしているかもしれませんが,どうかご教授よろしくお願いします.

コード:

#include <stdio.h>
#include <stdlib.h>
#define AA 128

char *count(char *a,char *b);

int main(void)
	{
	char a[AA],b[AA];
	char *ss;
	int k;
	FILE *fp;
	
    fp=fopen("input.txt","r");	
	fgets(a,AA,fp);
	fclose(fp);

	ss=count(a,b);
	printf("%s\n", ss);
	
    fp=fopen("output.txt","w");
	fputs(b,fp);
	printf("output.txtに書き込みしました");
    fclose(fp);

	return(0);
}

char *count(char *a,char *b){
	int i,j;

	i=0;
	j=0;
	while(a[i]!='\n'){
		if(a[i]=='/')
		 j++;
		 i++;
		if(j==3)break;
		}

	j=0;
	while(a[i]!='\n'){
		b[j]=a[i];
		 j++;
		 i++;
		}

	return(b);
}

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 初心者です.

#2

投稿記事 by みけCAT » 13年前

return(b);の前の行にb[j]=0;を追加してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

おもこもえ

Re: 初心者です.

#3

投稿記事 by おもこもえ » 13年前

追加してみましたがうまく実行できませんでした.
whileの条件がおかしいのでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 初心者です.

#4

投稿記事 by みけCAT » 13年前

a!='\n'となっている条件を、両方a!='\n' && a!=0としてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

おもこもい

Re: 初心者です.

#5

投稿記事 by おもこもい » 13年前

できました!もう少しループの勉強をしようと思いました.
ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る