|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.12.2010, 04:31 | #1 |
Регистрация: 29.11.2010
Сообщений: 5
|
преобразование типов char-const char
помогите найти ошибку(сортировка массива строк)
выводит:error C2664: strcpy: невозможно преобразовать параметр 2 из 'char *[100]' в 'const char *' Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции #include<iostream> #include<string.h> #include<conio.h> #include<stdio.h> #include<stdlib.h> using namespace std; typedef char *pChar; typedef char **ppChar; FILE*out1,*out2,*out3; void main() {out1=fopen("text1.txt","r"); out2=fopen("text2.txt","r"); out3=fopen("text3.txt","w"); int i,j,m,n,kolstrA,kolstrB; char in[80]; char an[80]; char*pa[100]; char*pb[100]; char*pc[100]; char*pk[100]; char a[100][80]; char b[100][80]; char c[200][80]; for (kolstrA=0;kolstrA<100;kolstrA++) {if(fgets(in,80,out1)==NULL) {break;}; in[80]='\0'; strncpy(a[kolstrA],in,80);}; fclose(out1); for(kolstrB=0;kolstrB<100;kolstrB++ ) {if(fgets(an,80,out2)==NULL) {break;}; an[80]='\0'; strncpy(b[kolstrB],an,80);}; fclose(out2); for(i=0;i<=kolstrA;i++) {pa[i]=a[i];}; for(j=0;j<=kolstrB;j++) {pb[j]=b[j];}; for(m=0;m<=(kolstrA+kolstrB);m++) {pc[m]=c[m];}; i=0; j=0; m=0; for(i=0;i<=kolstrA-2;i++) for(j=i+1;j<=kolstrA-1;j++) {if(strcmp(pa[i],pa[j])<0) {strcpy(pk,pa[i]); strcpy(pa[i],pa[j]); strcpy(pa[j],pk);};}; for(i=0;i<=kolstrB-2;i++) for(j=i+1;j<=kolstrB-1;j++) {if(strcmp(pb[i],pb[j])<0) {strcpy(pk,pb[i]); strcpy(pb[i],pb[j]); strcpy(pb[j],pk);};}; do {if(strcmp(pa[i],pb[j])<0) {pc[m]=pa[i]; i=i+1; m=m+1;} else {pc[m]=pb[j]; j=j+1; m=m+1;};} while(i<kolstrA||j<kolstrB); while(j<=kolstrB) {pc[m]=pb[j]; j=j+1; m=m+1;}; while(i<=kolstrA) {pc[m]=pa[i]; i=i+1; m=m+1;}; cout<<"rezultat"<<"\n"; for(m=0;m<(kolstrA+kolstrB);m++) {printf("%s\n",pc[m]);}; return; } |
01.12.2010, 04:45 | #2 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
Мне кажется что ошибка здесь
strcpy(pk,pb[i]); strcpy(pb[i],pb[j]); strcpy(pb[j],pk); pk -это ведь указатель а вы хотите его использовать как строку
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
01.12.2010, 04:53 | #3 |
Регистрация: 29.11.2010
Сообщений: 5
|
попыталась заменить:
char*pk[80]; и {strcpy(pk[1],pa[i]); strcpy(pa[i],pa[j]); strcpy(pa[j],pk[1]) здесь выходит: Run-Time Check Failure #3 - The variable 'pk' is being used without being initialized. |
01.12.2010, 04:59 | #4 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
да не у тя там pk для замены тупо
обьяви pk как char pk[80];
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
01.12.2010, 05:05 | #5 |
Регистрация: 29.11.2010
Сообщений: 5
|
А при таком раскладе в компиляторе ошибок нет, но при запуске Run-Time Check Failure #2 - Stack around the variable 'an' was corrupted.
|
01.12.2010, 05:10 | #6 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
Попробуй обьяви
an как char an[81];
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
01.12.2010, 05:19 | #7 |
Регистрация: 29.11.2010
Сообщений: 5
|
А вот теперь он печатает нечто, похожее на множество квадратных скобок. может, там еще что-то не так в массиве с[m]?
|
01.12.2010, 05:29 | #8 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
У тя ася есть??
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
01.12.2010, 20:45 | #9 |
Регистрация: 29.11.2010
Сообщений: 5
|
Да, в профиле указана.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [7]' to 'LPCWSTR' . VS.NET PE | kolob2000 | Qt и кроссплатформенное программирование С/С++ | 2 | 06.07.2010 18:51 |
Конвертирование из const char*(System::String) в LPCWSTR | Eros | Общие вопросы .NET | 1 | 27.05.2010 12:36 |
Cтроки. Приведение типов. char * to float | Aerial | Общие вопросы C/C++ | 3 | 28.04.2010 14:54 |
FastString::FastString(const char *psz) : m_psz(new char [strlen(psz) + 1]) { strcpy(m_psz, psz); } | lebedun | Общие вопросы C/C++ | 3 | 27.03.2009 03:43 |
Преобразование TCHAR в CHAR. | Игорь007 | Общие вопросы C/C++ | 2 | 13.10.2008 21:50 |