Tag: c strings

我的C字符串反向函数的Stange行为

我只是一个业余程序员……当第二次阅读,相隔超过两年时,kochan的“Objective-C编程”,现在是第6版,到达指针章节我试图重振过去我开始使用C语言编程…所以,我尝试编写一个反向C字符串函数,使用char指针…最后我得到了所需的结果,但是…也有一个非常奇怪的行为,我用我的小编程经验无法解释…… 首先是代码: 这是一个.m文件, #import #import “*pathToFolder*/NSPrint.m” int main(int argc, char const *argv[]) { @autoreleasepool { char * reverseString(char * str); char *ch; if (argc = 0; size–, i++) { result[i] = *(str + size); //printf(“%c, %c\n”, result[i], *(str + size)); } result[i] = ‘\0’; //printf(“result location: %lu\n”, result); //printf(“%s\n”, result); return result; } 第二个注意事项: 此代码在MacBook […]

如何从函数返回可变大小的字符串?

我需要一个函数的工作代码,它将返回一个随机长度的随机字符串。 我想要做的事情将通过以下代码更好地描述。 char *getRandomString() { char word[random-length]; // …instructions that will fill word with random characters. return word; } void main() { char *string = getRandomString(); printf(“Random string is: %s\n”, string); } 为此,我严格禁止使用除stdio.h之外的任何其他包含。 编辑:这个项目将适合为PIC微控制器编译,因此我不能使用malloc()或类似的东西。 我在这里使用stdio.h的原因是我能够使用GCC检查输出。 目前,此代码给出了此错误.- “warning:function返回局部变量的地址[默认启用]” 然后,我认为这可行.- char *getRandomString(char *string) { char word[random-length]; // …instructions that will fill word with random characters. string = […]

理解C中的dereference,address-of和array下标运算符

我将argv []定义为char *。 使用以下printf语句: printf(“%s\n”,argv[1]); // prints out the entire string printf(“%p\n”,&argv[1]); // & -> gets the address printf(“%c\n”,argv[1][0]);// prints out the first char of second var printf(“%c\n”,*argv[1]); // 这是我不明白的最后一个。 打印*argv[1]是什么意思? 为什么不和*argv[1][0] ,为什么你不能打印出printf(“%s\n”,*argv[1]); 。 另外,为什么&*argv[1]的地址不同?

为什么fgets()和strncmp()在这个C代码中无法进行字符串比较?

这是我遇到的一个非常有趣的问题。 我做了很多关于堆栈溢出的搜索,发现其他人有类似的问题。 所以我相应地写了我的代码。 我最初有fscan()和strcmp() ,但这完全轰炸了我。 所以其他post建议使用fgets()和strncmp()并使用长度来比较它们。 我试着通过打印出两个字符串的大小来调试我正在做的事情。 我想,也许他们有/n或漂浮在那里或其他东西搞乱了(另一篇文章谈到了这一点,但我认为这不会发生在这里)。 因此,如果大小相同,则strncmp()的限制应该相同。 对? 只是为了确保他们被认为是正确的比较。 现在,我知道如果字符串相同,则返回0否则使用strncmp()返回负数。 但它不起作用。 这是我得到的输出: perk repk Enter your guess: perk Word size: 8 and Guess size: 8 Your guess is wrong Enter your guess: 这是我的代码: void guess(char *word, char *jumbleWord) { size_t wordLen = strlen(word); size_t guessLen; printf(“word is: %s\n”,word); printf(“jumble is: %s\n”, jumbleWord); char […]

获取Cstrings的控制台输入

注意:这是在C ++中但使用C风格的字符串 你好, 我正在进行一项任务,我需要从控制台获取输入并将其保存到cstring。 一切都编译得很好,但是当程序运行时,它只是跳过了从用户那里得到的输入。 因此它将输出:“输入要插入的字符串:”然后跳过cin.getline函数,然后执行下一个命令。 这是我的头文件,cstring的声明,以及我遇到问题的代码行。 #include “stdafx.h” #include #include using namespace std; int main() { char tempCString[500] = {}; //…code snipit… cout << "Enter string to be inserted: " << endl; cin.getline(tempCString, 500, '\n'); //I've also tried cin.getline(tempCString, 500); //…end code snipit… return 0; } 注意:我不能使用“cin >> tempCString”因为它只能获得第一个空格的输入,我需要从控制台获取输入到换行符的所有内容。 谢谢

将1D char *分区为2D char **

关于将2Darrays转换为1Darrays存在很多问题,但我正在尝试恰恰相反。 我正在尝试将字符串分区为常量长度的子字符串,并将它们放在2D数组中。 此2D矩阵的每一行应包含初始字符串的子字符串,如果要连续读取每个行并连接,则应重现初始字符串。 我几乎让它工作,但由于某种原因,我丢失了初始字符串(bin)的第一个子字符串(partitions [0] – length 8 * blockSize): int main (void){ char* bin = “00011101010000100001111101001101000010110000111100000010000111110100111100010011010011100011110000011010”; int blockSize = 2; // block size in bytes int numBlocks = strlen(bin)/(8*blockSize); // number of block to analyze char** partitions = (char**)malloc((numBlocks+1)*sizeof(char)); // break text into block for(int i = 0; i<numBlocks;++i){ partitions[i] = (char*)malloc((8*blockSize+1)*sizeof(char)); memcpy(partitions[i],&bin[8*i*blockSize],8*blockSize); partitions[i][8*blockSize] […]

如果使用相同的数组作为两个参数,strcat()崩溃

char r[40]; strcpy(r,”abcdef”); strcat(r,r); 我的程序在第三行崩溃了吗? 替换strcat(r,r); by strcat(r,“abcdef”); 虽然工作正常….为什么?

如何将时间转换为c中的ac字符串?

我想在.c文件中写一些.txt文件,但需要用当前时间戳作为后缀来命名该文件,就像filename_2010_08_19_20_30一样。 所以我必须首先定义文件名char数组并自己处理文件名?逐个分配字符? 有没有简单的方法呢?

我可以将char * 转换为char 吗?

我现在自己纠正了这个程序。 这仍然是 – 回答的问题:我有一个二维数组的字符,每个数组都包含一个字。 我逐字逐句地将char*与一个函数分开,将它们放在数组中。 我的问题是它不打印单词而是随机字符。 可能是指针问题? 我不确定char*[20]到char[][20]的转换,因为我想过滤char*spamArray[20]到char[][20] 我需要将char*[20]传递给具有参数char[][20]的filter。 这是电话: char* spam = “this is a string”; //spam isn’t actually initialized this way, but this is just for explaining what it contains //OLD QUESTION CODE:char (*spamArray)[20] = (char(*)[20])malloc((sizeof(char) * 20) * nSpam); //new: char spamArray[nSpam][20]; //nSpam is the number of words splitstring(spam, &spamArray[0], nSpam); 这是函数splitstring成单词 […]

C字符串在C和C ++中为大写

当我在C ++中组合一个大写的函数时,我注意到我没有在C中收到预期的输出。 C ++函数 #include #include #include void strupp(char* beg) { while (*beg++ = std::toupper(*beg)); } int main(int charc, char* argv[]) { char a[] = “foobar”; strupp(a); printf(“%s\n”, a); return 0; } 按预期输出: FOOBAR Cfunction #include #include #include void strupp(char* beg) { while (*beg++ = toupper(*beg)); } int main(int charc, char* argv[]) { char a[] […]