Tag: string

修改C字符串:访问冲突

可能重复: 为什么简单的C代码会收到分段错误? 修改C字符串常量? 为什么此代码会产生访问冲突? int main() { char* myString = “5”; *myString = ‘e’; // Crash return 0; }

比较两个文本文件 – C中的拼写检查程序

我正在编写一个拼写检查程序,它将用户的文本文件与字典进行比较,以查看他们输入的单词是否在字典中。 如果不是,则打印错误消息以告知用户特定单词是错误的。 我已尝试过以下代码的多种变体,但未获得所需的结果。 它是嵌套while循环中的东西,它将它抛出。 这段代码处于草案阶段我必须使其更具内存效率等并整理它。 我只是想让它先工作。 谢谢! 编辑:根据下面的提示稍微修改了代码。 它现在读取第一个单词并说它在字典中。 然后显示第二个单词,但字典扫描循环不运行,程序挂起。 我知道它嵌套的while循环导致问题我无法理解它! /*Spellcheck program*/ /*Author: */ #include #include #include int main(void) { /*Open files and test that they open*/ FILE *fp1; FILE *fp2; char fname[20]; char wordcheck[45];/*The longest word in the English Language is 45 letters long*/ char worddict[45]; char dummy; int i; int dictcount = […]

为什么在C中使用错误的格式说明符会使我的程序在Windows 7上崩溃?

我的节目如下; #include #include int main() { char string[] = “Gentlemen start your engines!”; printf(“That string is %s characters long.\r\n”, strlen(string)); return 0; } 我正在gcc下编译,虽然它没有给我任何错误,程序每次运行时都会崩溃。 从我见过的例子来看,代码似乎很好。 很高兴知道我做错了什么。 谢谢。

validation传递给函数的字符串类型(例如文字,数组,指针)

我有一个函数,它接受一个字符数组及其大小: void store_string (const char *p, size_t size); // ‘p’ & ‘size’ stored in map 该函数由宏包装为: #define STORE_STRING(X) store_string(X, sizeof(X)) 我的问题是,我想以某种方式禁止或通知用户只应将字符串文字传递给此函数。 因为,如果任何指针或本地数组存储在地图内,那么它们可能会超出范围并造成严重破坏! 是否有任何编译时方式(首选)或至少是运行时方式来执行此操作?

C中的字符串流

print2fp(const void *buffer, size_t size, FILE *stream) { if(fwrite(buffer, 1, size, stream) != size) return -1; return 0; } 如何将数据写入字符串流而不是文件流?

当我们在C中的字符串末尾不包含’\ 0’时会发生什么?

在C中,当我以这种方式初始化我的数组时: char full_name[] = { ‘t’, ‘o’, ‘a’, ‘n’ }; 并使用printf(“%s”, full_name);打印printf(“%s”, full_name); 用valgrind运行它我得到了错误 未初始化的值是通过堆栈分配创建的 为什么会这样?

strcmp或string :: compare?

我想比较两个字符串。 strcmp有可能吗? (我试过,似乎没有用)。 string::compare解决方案吗? 除此之外,还有一种方法可以将string与char进行比较吗? 感谢您的早期评论。 我是用C ++编写的,是的,就像你提到的一样,它是std::string 。 我没有发布代码,因为我想学习一般知识,这是一个很长的代码,所以它与问题无关。 我想我已经了解了C ++和C之间的区别,感谢你指出这一点。 我现在将尝试使用重载运算符。 顺便说一句, string::compare也有效。

const char指针赋值

以下作业是否有效? 或者这些都会产生问题。 请建议。 const char * c1; const char * c2; const char * c3; char * c4; c2 = c1; c2 = c3; c2 = c4; 如果我执行以下操作该怎么办? const char * c5 = “xyz”; char * c6 = “abc”; c2 = c5; c2 = c6;

将整数转换为字符串而无需访问库

我最近阅读了一份面试问题样本: 编写一个函数将整数转换为字符串。 假设您无权访问库函数,即itoa()等… 你会怎么做?

为什么“字符串数组的初始化字符串太长”在C中编译得很好而不是在C ++中编译?

以下程序使用警告在C中编译好,但在C ++中编译失败。 为什么? 是什么原因? #include int main(void) { char a[5]=”Hello”; a[0]=’y’; puts(a); for(int i=0;i<5;i++) printf("%c",a[i]); return 0; } 警告: Warning:[Error] initializer-string for array of chars is too long [-fpermissive] enabled by default 但是如果程序编译为C ++程序,则C ++编译器会出现以下错误: [Error] initializer-string for array of chars is too long [-fpermissive] 我正在使用GCC 4.8.1编译器。