Запись элементов строки в массив

259
26 ноября 2016, 18:56
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
    char* limits = " ,-!";
    char str[20];
    char save_str[10][10];
    int len[10];
    int i = 0;
    printf("Full the string\n");
    fgets(str, 20, stdin);
    char* str1 = strtok(str, limits);
    while (str1 != NULL)
    {
        len[i] = strlen(str1);
        save_str[i][10] = *str1;
        printf("%s\n", str1, strlen(str1));
        str1 = strtok(NULL, limits);
        i++;
    }
    printf("new\n");
    for (int j = 0; j < i; j++)
    {
        printf("%s\n", save_str[j][len[j]]);
    }
    getchar();
    getchar();
    return 0;
}

Answer 1

Для начала после предложения с fgets

fgets(str,20,stdin);

напишите

str[ strcspn( str, "\n" ) ] = '\0';

Вместо этого предложения

save_str[i][10] = *str1;

запишите

strncpy( save_str[i], str1, 10 );
save_str[i][9] = '\0';

А также вместо этого предложения

printf("%s\n", str1, strlen(str1));

напишите либо

printf("%d: %s\n", len[i], str1 );

или просто

puts( str1 );

Также это предложение следует исправить

printf("%s\n",save_str[j][len[j]]);

Например,

printf("%s\n",save_str[j]);

или

puts( save_str[j] );
READ ALSO
Перегрузка оператор С++

Перегрузка оператор С++

Такой вопросЯ перегружаю операторы для работы с вектором, который состоит из трек точек

247
Ошибки SIGABRT и с sysmalloc

Ошибки SIGABRT и с sysmalloc

Пишу программу по двоичным деревьям

267