Tag: 字符串

文字字符串索引标准C?

我偶然发现包含以下内容的代码: char c = “abc”[1]; 它用gcc编译并运行良好! 在此表达式后c将为’b’ 。 这个标准是索引文字字符串还是它运气好吗?

无法从C中的文件中读取字符串并将其作为lc3解析器进行操作

我想创建一个程序,扫描文件的内容: 1283 5105 lc3中两条指令的hex代码: 添加r1,r2,r3 和r0,r4,r5 我希望我的程序读取此文件并在屏幕上打印两个相应的说明,有人可以告诉我它有什么问题 #include #include #include int main(int argc, char *argv[]) { FILE *file; char hexString[5]; int dr, sr1, sr2, instruction; file = fopen(argv[1], “r”); while (fscanf(file, “%d”, hexString) != EOF){ unsigned short int instruction = (unsigned short)strtol(hexString, NULL, 16); if (instruction >> 12 == 0b0001){ //op code is ADD dr […]

用C标记字符串?

我正在研究用C编写的计算器的终端解析器。我无法弄清楚如何连接运算符之间的所有数字以将它们放入数组中。 例如,如果输入(命令行参数)是“ 4+342 ”,则理想情况下input[] = {“4”, “+”, “342”} 。 到目前为止,这是我的代码。 我包括 , 和 。 typedef char * string; int main(int argc, char *argv[]) { string inputS = argv[1]; string input[10]; string temp; printf(“%s\n”, inputS); int i; int len = strlen(inputS); printf(“parsed:\n”); for(i = 0; i < len; inputS++, i++) { if(isdigit(*inputS)) { printf("%c",*inputS); } else […]

strcpy()和字符串数组

我需要将用户的输入存储到字符串数组中。 #include #include #include char *history[10] = {0}; int main (void) { char input[256]; input = “input”; strcpy(history[0], input); return (EXIT_SUCCESS); } 在终端上运行它我得到一个分段错误,在NetBeans中我得到main.c:11:错误:赋值中不兼容的类型。 我还尝试将所有历史记录移动到最新输入到第一个位置(历史[0])。 history[9] = history[8]; history[8] = history[7]; history[7] = history[6]; history[6] = history[5]; history[5] = history[4]; history[4] = history[3]; history[3] = history[2]; history[2] = history[1]; history[1] = history[0]; history[0] = input; 但这导致这样的输出。 […]

C在循环中使用int连接字符串

我是C的新手,我遇到了字符串问题。 我想要做的是在循环中创建一个像“val1,val2,val3”的字符串。 目前我的代码看起来像: char tagstr[60] = “”; int k; int n = 5; for (k=0; k < n; k++) { char temp[10] = ""; sprintf(temp, ", val%d", k); strcat(tagstr, temp); } 但是tagstr的输出是“,val#”,其中#是一些长整数值。 我猜这里我的指针做错了但是我已经尝试了所有我能想到的但没有成功……任何帮助都会非常感激。 编辑:更多上下文,如果它有帮助: int tagsClosed = strlen(pch1) – strcspn(pch1, “)”); do { if (curTag.size > 0) { // problem section char tagstr[60] = “”; […]

数组和指针创建的字符串之间的区别?

可能重复: C中的char s []和char * s有什么区别? 这有什么区别: char arr[] = “Hello, world!”; 还有这个: char *arr = “Hello, world!”; 两个字符串的内存分配在哪里? 为什么我无法更改后一个字符串的内容?

如何检查字符串是否以C中的某个字符串开头?

例如,要validation有效的Url,我想执行以下操作 char usUrl[MAX] = “http://www.stackoverflow” if(usUrl[0] == ‘h’ && usUrl[1] == ‘t’ && usUrl[2] == ‘t’ && usUrl[3] == ‘p’ && usUrl[4] == ‘:’ && usUrl[5] == ‘/’ && usUrl[6] == ‘/’) { // what should be in this something? printf(“The Url starts with http:// \n”); } 或者,我已经考虑过使用strcmp(str, str2) == 0 ,但这必须非常复杂。 是否有标准的C函数可以做这样的事情?

Memcpy,字符串和终结符

我必须编写一个函数,用一个字符串的内容填充指定长度的char *缓冲区。 如果字符串太长,我只需要剪切它。 缓冲区不是由我分配的,而是由我的函数用户分配的。 我试过这样的事情: int writebuff(char* buffer, int length){ string text=”123456789012345″; memcpy(buffer, text.c_str(),length); //buffer[length]=’\0′; return 1; } int main(){ char* buffer = new char[10]; writebuff(buffer,10); cout << "After: "<<buffer<<endl; } 我的问题是关于终结者:它应该存在与否? 这个函数用在一个更广泛的代码中,有时候当我需要剪切字符串时,我会遇到奇怪字符的问题。 有关正确程序的任何提示吗?

如何从C中的String中删除标点符号

我想从字符串中删除所有标点符号并在C中将所有大写字母小写,任何建议?

字符串交换适用于char **但不适用于char *

在这个程序中,我交换了前两个名字 #include void swap(char **,char **); main() { char *name[4]={“amol”, “robin”, “shanu” }; swap(&name[0],&name[2]); printf(“%s %s”,name[0],name[2]); } void swap(char **x,char **y) { char *temp; temp=*x; *x=*y; *y=temp; } 这个程序运行得很完美但是当我使用function swap(char *,char *)它不会交换地址为什么? 为什么我必须使用指针指针?