0
需要帮助的长时间潜伏者,我无法通过搜索找到。好吧,我在说谎,我发现了一些东西,但它没有帮助我。将char数组传给toupper函数
我想要做的是创建一个带有字符串的字符串数组,并将它们传递给一个函数,该函数将大写字母字符(它应该只有一个),然后用大写字母再次显示字符数组。
我不能得到这个工作。我通过搜索栏找到和它说我应该能够通过
*d = toupper(*d);
传递一个指向一个字符数组和大写,但它只是不工作。任何人都可以谈谈这个问题吗?谢谢!
它编译通过经由命令提示用gcc和它给是一个“总线10的错误”和Xcode中我得到这样的:“线程1:EXC_BAD_ACCESS(代码= 2,地址= memorylocation)”
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
void print_data(char *info[]);
void convert_data(char *info[]);
char *data[] = { "000a", "000b", "000c", "000d", "000e" };
print_data(data);
printf("\n");
convert_data(data);
print_data(data);
return 0;
}
void print_data(char *info[]) {
int n;
for (n=0; n < 5; n++) {
char *p = info[n];
while (*p != '\0') {
printf("%c", *(p++));
}
printf("\n");
}
}
void convert_data(char *info[]) {
int n;
for (n=0; n<5; n++) {
char *d = info[n];
while (*d != '\0') { // I THINK THIS IS THE PROBLEM
*d = toupper(*d); // RIGHT HERE TOO
d++;
}
}
}
首先,你还没有充分的描述你的程序的电流(不正确的)行为。它究竟在做什么?但对于初学者来说:while(* d!='\ 0')',这是一个infinete循环,因为'd'在循环内部没有任何变化。 – kaylum
我添加了d ++,但在它出现之前它给了我一个错误。 – rAFTA
“给我一个错误”..这是?如果确实有这个问题,那么用'd ++'更新你的代码,否则我们该如何关注你的实际问题? – kaylum