変数に入っている文字列を配列に代入したい
テキストファイルのデータを読み込み読み込んだ値を処理して出力するというプログラムを作っています。
読み込んだ値を変数に代入するところまではできたのですが、その変数に入った文字列を配列に代入する機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
aaa.c:45:17: error: array type 'char [128]' is not assignable
name[i] = str;
###実現したいこと
配列nameにファイルから読み込んだ8個の文字列を代入したい
該当のソースコード
#include<stdlib.h> #define NO 8 void bubblesort(int numbers[],int array_size) { int i,j,temp; for(i=0;i<(array_size-1);i++){ for(j=(array_size-1);j>i;j--){ if(numbers[j-1]>numbers[j]){ temp=numbers[j-1]; numbers[j-1]=numbers[j]; numbers[j]=temp; } } } } -------------------------------------------------------------------ここから下です int main(void){ FILE *fp; int i; char str[20]; int f1; int f2; int f3; int f4; int s[NO]; int bc; char name[NO][128]; fp = fopen("uuuo.txt","r"); if(fp == NULL){ printf("ファイルオープン失敗\n"); return -1; } for(i=0;i<NO;i++){ fscanf(fp, "%d,%c,%d,%d,%d", &f1, str ,&f2, &f3, &f4); bc=(f2+f3+f4)/3; s[i]=bc; printf("%d",s[i]); name[i] = str; printf("%s",name[i]); } return 0; }
###利用環境
ソフト vusual stdio code
pc mac
分かる方、回答の方よろしくお願いします
bubblesortが気になって
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NO 8
struct rec_dt {
int f1;
char name[128];
int f2;
int f3;
int f4;
int ave;
};
struct rec_dt rec[NO];
void bubblesort(struct rec_dt numbers[],int array_size)
{
int i,j;
struct rec_dt temp;
for(i=0;i<(array_size-1);i++){
for(j=(array_size-1);j>i;j--){
if(numbers[j-1].ave>numbers[j].ave){
temp=numbers[j-1];
numbers[j-1]=numbers[j];
numbers[j]=temp;
}
}
}
}
int main(void){
FILE *fp;
int i;
char str[21];
int f1;
int f2;
int f3;
int f4;
int bc;
fp = fopen("uuuo.txt","r");
if(fp == NULL){
printf("ファイルオープン失敗\n");
return -1;
}
for(i=0;i<NO;i++){
fscanf(fp, "%d,%20[^,],%d,%d,%d\n", &f1, str ,&f2, &f3, &f4);
bc=(f2+f3+f4)/3;
rec[i].ave=bc;
rec[i].f1=f1;
strcpy(rec[i].name, str);
rec[i].f2=f2;
rec[i].f3=f3;
rec[i].f4=f4;
}
for(i=0;i<NO;i++){
printf("%d %d %s %d %d %d\n",rec[i].ave, rec[i].f1, rec[i].name, rec[i].f2, rec[i].f3, rec[i].f4);
}
bubblesort(rec, NO);
printf("..sorted..\n");
for(i=0;i<NO;i++){
printf("%d %d %s %d %d %d\n",rec[i].ave, rec[i].f1, rec[i].name, rec[i].f2, rec[i].f3, rec[i].f4);
}
return 0;
}
回答2件
あなたの回答
tips
プレビュー