Я пытаюсь изучить C. Я хочу заполнить 2D-массив из 1D-массива, который я получил из файла.Заполнение 2D-массива из массива 1D в C
Теперь я пытаюсь взять элементы указателя массива (вывод: Hello, My, name, is, Ram.) В двумерный массив, называемый словами. цель состоит в том, чтобы удалить запятые и выделить каждое слово в другой строке. Я тоже этого добился. Тем не менее, я получаю какую-то тарабарщину вместе с моей работой. Я проверил свои записи один за другим и обнаружил, что первая строка (Hello, My, name, is, Ram.) Хранится в строке от 1 до 5 в слове []. Однако следующая строка (I, own, 20, тыс., Баксов) начинается со строки [10] слова, что я не понимаю почему? плюс мой вывод выглядит странно с некоторыми неизвестными значениями. Пожалуйста, сообщите мне, что я должен сделать, чтобы исправить свою мощность и размер 2 D массива равно значению оно содержит
Вот мой код:
int main(int argc, const char * argv[]) {
// insert code here...
FILE *fp;
char (*points)[50];
char *array;
int width=20,height=50;
char *word;
char words [width][height];
int counter=0; // To traverse through array and tracks the current position in array.
points = malloc(sizeof(*points) * 2);
word=malloc(width*height*sizeof(char));
if (points == NULL) {
perror("malloc");
exit(0);
}
fp = fopen("/Users/shubhamsharma/Desktop/data.txt", "r");
if (fp == NULL) {
perror("fopen");
exit(EXIT_FAILURE);
}
fgets(points[0], sizeof(*points), fp);
fgets(points[1], sizeof(*points), fp);
array=points[0];
printf("%s", points[0]);
printf("%s", points[1]);
for(int i=0;i<width;i++)
{
for(int j=0,p=counter;j<height;j++,p++)
{
if(array[p]==','||array[p]=='\0')
{
words[i][j]='\n';
counter=++p;
break;
}
else
words[i][j]=array[p];
}}
printf("\n%c",words[16][0]);
for (int i=0; i<width; i++) {
for (int j=0; j<height; j++) {
if(words[i][j]=='\n')
{
break;
}
printf("\nPrinting element in word\n");
printf("%c",words[i][j]);
}
}
printf("\n");
fclose(fp);
free(points);
return 0;
return 0;
}
Выход:
> Hello,My,name,is,Ram. I,own,20,thousand,bucks. Printing element in word
> HelloMynameisRam.+̮\213\377\310`\267t\377̮\213\377Iown20thousandbucks.
> Program ended with exit code: 0
Линии в моей файл выглядит примерно так .-
Hello,My,name,is,Ram.
I,own,20,thousand,bucks.
Знаете ли вы, что C и C++ - разные языки? – Olaf
Олаф может спрашивать из-за 'char words [width] [height];' или какой-либо другой конструкции, которая не будет компилироваться. Нам нужно знать, какой компилятор вы используете, и строите ли вы C или C++. – JVene
Я строю с помощью C с помощью XCODE. Извините, я думал, что логика может быть одинаковой в C и C++. –