Tag: string

接受C ++字符串和C样式字符串的generics类

如您所知:C样式字符串是一个以“null”结尾的字符数组 C ++样式字符串是: string s = “Some text”; 所以要接受C ++字符串和C样式字符串,我很确定我必须使用C ++模板。 我正在尝试编写一个类和一个方法,它返回C ++或C样式字符串的字符串的第二个字符。 我是在正确的轨道上吗? template class mystring { T pointer; public: mystring(T input) { pointer = input } char getSecondLetter() { T temp = pointer; temp++; return temp; } }; int main () { mystring myobject(“HELLO”); cout << myobject.getSecondLetter(); return 0; } ps程序员总是使用’​​T’作为模板类数据类型吗?

使用fgets从C中的文件中读取字符串

我试图从一个文件中读取字符串,该文件在新行上包含每个字符串,但我认为它只读取一行换行符而不是字符串,我不知道为什么。 如果我要以错误的方式阅读字符串,请纠正我。 i=0; F1 = fopen(“alg.txt”, “r”); F2 = fopen(“tul.txt”, “w”); if(!feof(F1)) { do{ //start scanning file fgets(inimene[i].Enimi, 20, F1); fgets(inimene[i].Pnimi, 20, F1); fgets(inimene[i].Kood, 12, F1); printf(“i=%d\nEnimi=%s\nPnimi=%s\nKaad=%s”,i,inimene[i].Enimi,inimene[i].Pnimi,inimene[i].Kood); i++;} while(!feof(F1));}; /*finish getting structs*/ printf是让我看到什么是什么,这是结果 i=0 Enimi=peter Pnimi=pupkin Kood=223456iatb i=1 Enimi= Pnimi=masha Kaad=gubkina i=2 Enimi=234567iasb Pnimi=sasha Kood=dudkina 正如您在第一个结构读取后所看到的那样,有一个空白(换行符?)onct然后一切都被移动了。 我想我可以读取一个虚拟的字符串来吸收额外的空白,然后什么都不会移动,但这并不能帮助我理解问题并避免将来使用。 编辑1:我知道它停在换行符但仍然读取它。 我想知道为什么它不会在第三个字符串中读取它并转移到第四个字符串而不是将第四个字符串作为源的第四行但它只发生一次。 顺便说一下,文件的格式是这样的 peter pupkin 223456iatb masha gubkina […]

C99删除stricmp()和strnicmp()?

是否在C99中删除了stricmp()和strnicmp()函数? 当我尝试针对C99编译时,我总是得到警告隐式声明函数stricmp() (以及strnicmp() )。 例如,下面的简单代码让我发出警告。 #include #include char arr[100]=”hello”; char arr2[100]=”hEllo”; int main() { int n=-1; printf(“%d\n”,n); n=strnicmp(arr,arr2,3); // the same when use the function stricmp(); printf(“%d\n”,n); getchar(); return 0; } 当我尝试针对C99( gcc -Wall -std=c99 main.c -o main )编译这段代码时,我收到了警告。 但是当我在没有-std=c99情况下编译它时,不会抛出任何警告。 但是,即使存在隐式声明的警告,我的代码仍然正常。 这是为什么? 那是一个错误吗? 如果不是一个错误,那么C99的变化究竟发生了什么?

如何调用使用JNI从C返回String的Java方法?

有没有办法调用java方法,它在C中返回一个String ? 对于Integer它的工作原理如下: JNIEXPORT jint JNICALL Java_Client_getAgeC(JNIEnv *env, jobject callingObject, jobject employeeObject) { jclass employeeClass = (*env)->GetObjectClass(env, employeeObject); jmethodID midGetAge = (*env)->GetMethodID(env, employeeClass, “getAge”, “()I”); int age = (*env)->CallIntMethod(env, employeeObject, midGetAge); return age; } 我已经搜索了很长时间但是没有什么能用于String 。 最后,我想得到一个char* 提前致谢!

如何解析通过TCP收到的数字字符串

我通过TCP从传感器接收数据,输出如下: 它是双倍价值的6倍。 我只需要前三个。 在X,Y和Z方向上的力可以获得合力。 我被告知我正在回收’传感器流的双字符串表示’并且我应该使用atof函数,该函数接受表示浮点数的字符串并返回double。 所以,问题是。 我正在使用以下代码从传感器接收数据 char recvbuf[DEFAULT_BUFFER_LENGTH]; int iResult = recv(ConnectSocket, recvbuf, DEFAULT_BUFFER_LENGTH, 0); double n; n = atof (recvbuf); 输出总是错误的,要么我得到错误的数据,30000而不是0.1414,或者我读取0.15为0.有关如何获得所有3个数据的任何提示? 我使用BUFFER = 50,因为我不需要阅读更多,我甚至不知道总共多长时间,来自传感器的字符串是。

为什么sizeof(指针)返回不正确的值?

可能重复: Sizeof字符串文字 在我的windows7 mingw环境中,我试过这个: char str[] = “hello”; sizeof(str)的值是6,而不是4或8。 怎么会发生这种情况?

_wfreopen适用于c:/path/file.txt但不适用于c:\ path \ file.txt?

TCHAR finalpath[MAX_PATH]; GetCurrentDirectory(MAX_PATH,finalpath); TCHAR filename[] = TEXT(“\\lista.txt”); wcscat(finalpath,filename); wprintf(L”List will be saved to %s”, finalpath); 所以这基本上证实了我的最终路径确实是c:\ somepath \ lista.txt 但_wfreopen(TEXT(finalpath),TEXT(“w”),stdout); 如果我只是改变它 _wfreopen(TEXT(“c:/somepath/lista.txt”),TEXT(“w”),stdout); 一切都工作正常,为什么以及如何让它接受我的最终路径arg? 谢谢

删除char数组中的第一个标记,并将其余标记保留在C中

所以如果我在C中有以下char数组: “abc” // where “a”, “b”, and “c” can be char arrays of any length and the // space between them can be of any length 如何删除“a”标记但将其余的“bc”存储在char指针中? 到目前为止,我已经实现了以下不起作用的方法: char* removeAFromABC(char* a, char* abc) { char* abcWithoutA[MAXIMUM_LINE_LENGTH + 1]; int numberOfCharsInA = strlen(a); strcpy(abcWithoutA, (abc + numberOfCharsInA)); return abcWithoutA; }

汇编循环通过字符串来计算字符

我尝试制作一个汇编代码,计算字符串中有多少个字符,但是我得到一个错误。 代码,我使用gcc和intel_syntax #include int main(){ char *s = “aqr b qabxx xryc pqr”; int x; asm volatile ( “.intel_syntax noprefix;” “mov eax, %1;” “xor ebx,ebx;” “loop:” “mov al,[eax];” “or al, al;” “jz print;” “inc ebx;” “jmp loop” “print:” “mov %0, ebx;” “.att_syntax prefix;” : “=r” (x) : “r” (s) : “eax”, “ebx” ); printf(“Length of […]

使用其他子字符串替换字符串的子字符串时出现分段错误

我有字符串“{”1“:”[4,11,14,19,20,18,27]“}”。 我想把它改成“{\”1 \“:\”4,11,14,19,20,18,27 \“}”。 以下是我的代码: #include #include #include char *replace (char *this, char *withthat, char *inthis) { char *where = inthis; while ((where = strstr(where, this))) { memcpy(where, withthat, strlen(withthat)); memmove(where+strlen(withthat),where+strlen(this), strlen(where+strlen(this))+1); } return inthis; } int main(void) { char string[] = “{"1":"[4,11,14,19,20,18,27]"}”; printf(“%s\n”, replace(“"”, “\\\””, string)); printf(“%s\n”, replace(“\”[” , “\””, string)); printf(“%s\n”, replace(“]\\” , […]